我有一组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
的每一行NUMBER
,LEN
是输入文件中的行数。但问题是我不想在编译期间指定NUMBER
和LEN
,因为我必须使用不同的输入。说过我希望用户在运行程序时将NUMBER
和{{1}}作为输入参数。由于我无法对bitset进行动态分配,我想使用vector但不知道如何使用它来完成我的工作!
你能告诉我如何读取和存储我的输入,并在矢量或任何其他可以处理动态分配的帮助下进行成对布尔运算。
答案 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++;
}
就成对布尔运算而言,迭代两个向量并执行适当的按位运算应该足够了。