将Bitset数组转换为vector <bool> </bool>

时间:2015-02-03 22:14:09

标签: c++ arrays vector bitset

我有一组0和1作为我的输入,如下所示,我需要在它们之间做一些成对布尔运算(和,或者,Xor,不是)(将每一行视为)。

111100000000
101100000010
111011100000
111100000001
001100010001

读取和存储每一行​​的代码是:

int lineCounter = 0;
while (std::getline(infile, line))
{
    myinput[lineCounter] = bitset<LEN> (std::string(line));
    lineCounter++;
}

现在我使用bitset数组来存储bitset<LEN> myinput[NUMBER];每行LEN的每一行NUMBERLEN是输入文件中的行数。但问题是我不想在编译期间指定NUMBERLEN,因为我必须使用不同的输入。说过我希望用户在运行程序时将NUMBER和{{1}}作为输入参数。由于我无法对bitset进行动态分配,我想使用vector但不知道如何使用它来完成我的工作! 你能告诉我如何读取和存储我的输入,并在矢量或任何其他可以处理动态分配的帮助下进行成对布尔运算。

1 个答案:

答案 0 :(得分:3)

您可以像这样阅读输入:

vector< vector<bool> > set;
int lineCounter = 0;
while (std::getline(infile, line))
{
         string input = string(line)
   vector<bool> line;
   while(input.size!=0){
        if(input.front()=='0'{
            line.pushBack(false);
        }
        else{
            line.pushBack(true);
        }
    input.erase(0,1);
    }
    set.pushback(line);
    lineCounter++;
}

就成对布尔运算而言,迭代两个向量并执行适当的按位运算应该足够了。

相关问题