subset.cpp: In function ‘void getSubsets(std::vector<T, std::allocator<_T2> >*)’:
subset.cpp:10: ошибка: нет декларации ‘bv’ в этой области видимости
subset.cpp:10: ошибка: некорректный аргумент шаблона 1
subset.cpp:10: ошибка: некорректный аргумент шаблона 1
subset.cpp:10: ошибка: некорректный аргумент шаблона 2
С++; template; gcc находит ошибки
Код:
Вот код:
Код:
#include<iostream>
#include<vector>
#include<bitset>
#include<cmath>
template<int c/*мощность множества*/, class T>
void getSubsets(std::vector<T>* pv)
{
int bc; // мощность универсума
std::vector<std::bitset<c>> bv; // будем хранить битовые наборы
bc = pow(2.0, c);
// генерация кодов
for(int i = 0; i < bc; ++i)
bv.push_back(std::bitset<c>(i));
//считывание и вывод результата
for(int i = 0; i < bc; ++i)
{
for(int j = 0; j < c; ++j)
{
if(bv.test(j))
{
std::cout << pv ->at(j) << '\t';
}
}
std::cout << std::endl;
}
}
int main()
{
std::vector<int> v;
v.push_back(1);
v.push_back(2);
v.push_back(3);
getSubsets<3>(&v);
}
#include<vector>
#include<bitset>
#include<cmath>
template<int c/*мощность множества*/, class T>
void getSubsets(std::vector<T>* pv)
{
int bc; // мощность универсума
std::vector<std::bitset<c>> bv; // будем хранить битовые наборы
bc = pow(2.0, c);
// генерация кодов
for(int i = 0; i < bc; ++i)
bv.push_back(std::bitset<c>(i));
//считывание и вывод результата
for(int i = 0; i < bc; ++i)
{
for(int j = 0; j < c; ++j)
{
if(bv.test(j))
{
std::cout << pv ->at(j) << '\t';
}
}
std::cout << std::endl;
}
}
int main()
{
std::vector<int> v;
v.push_back(1);
v.push_back(2);
v.push_back(3);
getSubsets<3>(&v);
}
Что "не нравится" gcc?
Код:
std::vector< std::bitset<c> > bv;