【问题标题】:Convert Array of Bitset to vector<bool>将位集数组转换为向量<bool>
【发布时间】:2015-02-03 22:14:09
【问题描述】:

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

111100000000
101100000010
111011100000
111100000001
001100010001

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

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

现在我正在使用 bitset 数组来存储每一行​​ bitset&lt;LEN&gt; myinput[NUMBER]; LEN 是每行的大小,NUMBER 是我输入文件中的行数。但问题是我不想在编译期间指定LENNUMBER,因为我必须使用不同的输入。话虽如此,我希望用户在运行程序时将LENNUMBER 作为输入参数。由于我无法为 bitset 进行动态分配,我想使用 vector 但不知道如何使用它来完成我的工作! 你能告诉我如何读取和存储我的输入,并借助向量或其他任何可以处理动态分配的东西进行成对布尔运算。

【问题讨论】:

标签: c++ arrays vector bitset


【解决方案1】:

你可以像这样读取输入:

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++;
}

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

【讨论】:

  • 我的问题是如何将其更改为矢量,所以你的回答没有帮助
  • 所以你想知道如何用vector而不是bitset重写你的代码?
  • 没错,因为在我的情况下,我似乎需要 2D 矢量!如果我错了,请纠正我
  • @Am1rr3zA 完全改变了答案
  • 感谢您的回答,关于成对布尔运算我们有更好的解决方案吗?
猜你喜欢
  • 1970-01-01
  • 2014-09-19
  • 1970-01-01
  • 1970-01-01
  • 2021-12-26
  • 2015-08-29
  • 2015-06-12
  • 1970-01-01
相关资源
最近更新 更多