C++ 对仅包含0和1的两个向量应用or(| |)运算符
我有两个向量: A={1,0,1,1}, B={0,1,1,1}。 如何对这两个变量应用or运算符,以便得到向量:C++ 对仅包含0和1的两个向量应用or(| |)运算符,c++,c++11,vector,c++14,C++,C++11,Vector,C++14,我有两个向量: A={1,0,1,1}, B={0,1,1,1}。 如何对这两个变量应用or运算符,以便得到向量: C={0,0,1,1}。您可以使用索引以元素方式循环它们 #include <iostream> #include <vector> int main() { std::vector<int> A = {1, 0, 1, 1}; std::vector<int> B = {0, 1, 1, 1}; std:
C={0,0,1,1}。您可以使用索引以元素方式循环它们
#include <iostream>
#include <vector>
int main()
{
std::vector<int> A = {1, 0, 1, 1};
std::vector<int> B = {0, 1, 1, 1};
std::vector<int> C(A.size());
for (std::size_t i = 0; i < A.size(); ++i)
{
C[i] = A[i] && B[i];
}
for (auto value : C)
{
std::cout << value << " ";
}
}
#包括
#包括
int main()
{
向量A={1,0,1,1};
向量B={0,1,1,1};
向量C(A.size());
对于(std::size_t i=0;i std::cout您可以使用索引以元素方式循环它们
#include <iostream>
#include <vector>
int main()
{
std::vector<int> A = {1, 0, 1, 1};
std::vector<int> B = {0, 1, 1, 1};
std::vector<int> C(A.size());
for (std::size_t i = 0; i < A.size(); ++i)
{
C[i] = A[i] && B[i];
}
for (auto value : C)
{
std::cout << value << " ";
}
}
#包括
#包括
int main()
{
向量A={1,0,1,1};
向量B={0,1,1,1};
向量C(A.size());
对于(std::size_t i=0;istd::vector C;
std::transform(A.begin(),A.end(),B.begin(),
std::back_插入器(C),std::logical_和();
std::vector C;
std::transform(A.begin(),A.end(),B.begin(),
std::back_插入器(C),std::logical_和();
你说你想使用OR,但你预期的输出显示AND。是哪一个?你尝试了什么?听起来你想要AND操作符,而不是OR操作符…1011
0111
=1111
vs1011
^0111
=0011
根据你的使用情况,可能值得考虑。As问题被标记为vector
似乎您正在寻找动态位集。为此,std::vector
以及std::vector
(由于后者的特殊性质)应该避免。如果动态位集确实是您要寻找的,那么我下面链接的Q&a可能是这个问题的合适副本。另请参阅和。您可能重复说您想使用或,但您预期的输出提示和。是哪一个?您尝试了什么?听起来您想要的是and运算符,而不是OR运算符运算符…1011
V0111
=1111
vs1011
^0111
=0011
取决于您的用例,可能值得考虑。由于问题被标记为vector
,您似乎在寻找一个动态位集。为此,std::vector
以及std::vector
>(由于后者的特殊性质)应该避免。如果您确实在寻找动态位集,那么我下面链接的Q&a可能是这个问题的合适副本。另请参见和。的可能副本还需要检查B.size()>=a.size()如果不是真的,则行为是未定义的。也需要检查<代码> b siz()> = siz()/c>。如果行为不正确,则行为未定义。如果数组是固定大小的,也可以考虑使用<代码> STD::BITSET 。如果数组是固定大小的,也可以考虑使用<代码> STD::BITSET 。