Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 向量的向量的位运算 问题描述_C++_Bit Manipulation_Bitwise Operators - Fatal编程技术网

C++ 向量的向量的位运算 问题描述

C++ 向量的向量的位运算 问题描述,c++,bit-manipulation,bitwise-operators,C++,Bit Manipulation,Bitwise Operators,你好,我正在写一个我做的解决问题的老程序。 作为解决这个问题的一部分,我(为一些行)生成了一个数组,其中包含了所有可能的方法来拟合这些数字 我想创建一段代码,它将合并所有可能的位置 这意味着,例如,在伪代码中: [[0, 0, 1], [1, 0, 1], [0, 1, 1]] OR - [1, 1, 1] AND - [0, 0, 1] 这两个操作的结果将让我确切地知道我们在哪里有一个固定值。 [?,?,1] 假设 >P>该解决方案在C++中是需要的。 放置位置存储在向量中 所有

你好,我正在写一个我做的解决问题的老程序。 作为解决这个问题的一部分,我(为一些行)生成了一个数组,其中包含了所有可能的方法来拟合这些数字

我想创建一段代码,它将合并所有可能的位置

这意味着,例如,在伪代码中:

[[0, 0, 1],
 [1, 0, 1],
 [0, 1, 1]]

OR - [1, 1, 1]
AND - [0, 0, 1]
这两个操作的结果将让我确切地知道我们在哪里有一个固定值。
[?,?,1]

假设
    >P>该解决方案在C++中是需要的。
  • 放置位置存储在
    向量中

  • 所有内部
    向量的大小都相同

  • 执行哪种位操作无关紧要,只是它可以应用于所有向量

可能的解决办法 进一步元数据 如果有人对完整的实现感兴趣,一旦完成并完整记录,我将把它上传到我的网站上


提前感谢您的帮助者和评论员。

这是否回答了您的问题?请发布您迄今为止尝试过的内容,否则很可能由于缺少实际代码而关闭。@KenY-N,这并不能回答我的问题,因为它不是单独在向量上,而是在每个索引的所有向量上。您的代码中有一个输入错误。打印出
merged\u和
,而不是
merged\u或
。如果编辑,它会给出正确的结果。因为我们有一个工作示例,所以我认为这现在是一个问题。据我所知,
std::vector
相当慢,因此在那里发布的帖子可能会建议如何有效地使用
boost::dynamic_bitset
#include <vector>
#include <iostream>

using namespace std;

int main() {
    vector<vector<bool>> options =
            {{false, false, true},
             {true,  false, true},
             {false, true,  true}};

    vector<bool> merge_and, merge_or;
    bool flag;
    int i, j;

    for (i = 0; i < options.size(); i++) {
        for (j = 0; j < options[0].size(); j++) cout << options[i][j];
        cout << endl;
    }
    cout << endl;

    for (i = 0; i < options[0].size(); i++) {
        flag = options[0][i];
        for (j = 1; j < options.size(); j++) {
            flag = flag & options[j][i];
        }
        merge_and.push_back(flag);
    }

    for (i = 0; i < options[0].size(); i++) {
        flag = options[0][i];
        for (j = 1; j < options.size(); j++) {
            flag = flag | options[j][i];
        }
        merge_or.push_back(flag);
    }

    cout << "AND ";
    for (const auto &i : merge_and) cout << i;
    cout << endl;

    cout << "OR ";
    for (const auto &i : merge_or) cout << i;
    cout << endl;
}
001
101
011

AND 001
OR 001