是否有任何简单的方法来实现std :: array和std :: vector的算术运算?

时间:2014-03-30 04:32:51

标签: c++ arrays vector containers

任何简单方法可以为{+-*/+=,...)重载所有类型的算术运算符{1}}和std::array?算术运算是成员方式的。类似于以下内容

std::vector

2 个答案:

答案 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