任何简单方法可以为{+
,-
,*
,/
,+=
,...)重载所有类型的算术运算符{1}}和std::array
?算术运算是成员方式的。类似于以下内容
std::vector
答案 0 :(得分:4)
std::vector<int> input1(..);
std::vector<int> input2(..);
std::vector<int> output(input1.size());
std::transform (input1.begin(), input1.end(), input2.begin(), output.begin(), std::plus<int>());
还有其他仿函数可供选择,您可以自己制作或使用lambda。
答案 1 :(得分:1)
你想要这个吗?
#include <iostream> // std::cout
#include <iterator> // std::ostream_iterator, std::back_inserter
#include <algorithm> // std::copy, std::transform
#include <vector>
#include <deque>
#include <list>
int main()
{
std::vector<int> vt = { 1, 2, 3, 4, 5 };
std::deque<int> de = { 3, 4, 5, 6, 7 };
std::list<int> out;
std::transform(vt.begin(), vt.end(), de.begin(), std::back_inserter(out),
[](int a, int b) { return a + b; });
std::copy(out.begin(), out.end(), std::ostream_iterator<int>(std::cout, "\n"));
}
输出是:
4
6
8
10
12
我认为STL容器的运算符重载(例如std::vector
)并不好。相反,您可以使用std::valarray。