Можно ли создать вектор битовых наборов? - PullRequest
6 голосов
/ 21 января 2012

Я пытаюсь создать вектор наборов битов в C ++. Для этого я попытался выполнить попытку, как показано во фрагменте кода ниже:

vector<bitset<8>> bvc;
    while (true) {
        bitset<8> bstemp( (long) xtemp );
        if (bstemp.count == y1) {
            bvc.push_back(bstemp);
        }
        if ( xtemp == 0) {
            break;
        }
        xtemp = (xtemp-1) & ntemp;
    }

Когда я пытаюсь скомпилировать программу, я получаю сообщение об ошибке, которое гласит, что bvc не было объявлено в области. Это также говорит о том, что аргументы шаблона 1 и 2 недопустимы. (1-я строка). Кроме того, в строке, содержащей bvc.push_back(bstemp), я получаю сообщение об ошибке, указывающее на недопустимое использование функции-члена.

Ответы [ 2 ]

13 голосов
/ 21 января 2012

У меня такое ощущение, что вы используете pre C ++ 11.

Измените это:

vector<bitset<8>> bvc;

на это:

vector<bitset<8> > bvc;

В противном случае>> анализируется как оператор сдвига вправо.Это было «исправлено» в C ++ 11.

4 голосов
/ 21 января 2012

Измените vector<bitset<8>> bvc на vector<bitset<8> > bvc.Обратите внимание на пространство.>> - это оператор.

Да, довольно неприятный синтаксис.

...