cout矢量 >更简洁

问题描述 投票:0回答:1
#include <iostream>
#include <algorithm>
#include <functional>
#include <vector>
using namespace std;

int main()
{
    vector<vector<int>> v1 = { {1, 2}, {3, 4} };
    vector<vector<int>> v2 = { {5, 6}, {7, 8} };
    for (int i = 0; i < v1.size(); ++i)
    {
        transform(v1[i].begin(), v1[i].end(), v2[i].begin(), v1[i].begin(), plus<int>());
    }
    for (const auto& i : v1)
    {
        for (const auto& j : i)
        {
            cout << j << " ";
        }
        cout << endl;
    }
}

是否可以使用更简洁的代码打印向量?以algorithm为例。谢谢。

输出:

6 8

10 12

编辑:我不想写任何新的或重载运算符。

c++ c++11 c++14
1个回答
3
投票

一种方法是使用std::ostream_iterator

for(const auto& i : v1) {
    using V = std::decay<decltype(i)>::type::value_type;
    std::copy(i.begin(), i.end(), std::ostream_iterator<V>(std::cout, " "));
    cout << endl;
}

IMO,循环更容易阅读。

© www.soinside.com 2019 - 2024. All rights reserved.