我试图在 C++ 中的向量上使用或 (|) 运算符。经过数小时的研究,我找不到任何直接作用于向量的函数,因此我目前正在编写如下内容:
int len = 10;
std::vector<bool> v1(len);
std::vector<bool> v2(len);
std::vector<bool> vout(len);
//Some code to determine the content of v1 and v2
for(int i = 0; i < len ; i++)
{
vout[i] = v1[i] | v2[i];
}
但是,我认为这会减慢我的代码速度,因此我想知道是否有任何方法可以在两个向量上使用 or 运算符?
尝试使用std::transform
:http : //www.cplusplus.com/reference/algorithm/transform/
// transform algorithm example
#include <iostream> // std::cout
#include <algorithm> // std::transform
#include <vector> // std::vector
#include <functional> // std::plus
int op_increase (int i) { return ++i; }
int main () {
std::vector<int> foo;
std::vector<int> bar;
// set some values:
for (int i=1; i<6; i++)
foo.push_back (i*10); // foo: 10 20 30 40 50
bar.resize(foo.size()); // allocate space
std::transform (foo.begin(), foo.end(), bar.begin(), op_increase);
// bar: 11 21 31 41 51
// std::plus adds together its two arguments:
std::transform (foo.begin(), foo.end(), bar.begin(), foo.begin(), std::plus<int>());
// foo: 21 41 61 81 101
std::cout << "foo contains:";
for (std::vector<int>::iterator it=foo.begin(); it!=foo.end(); ++it)
std::cout << ' ' << *it;
std::cout << '\n';
return 0;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句