c++ - cout vector<vector<int>> 更简洁

标签 c++ c++11 c++14

#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;
    }
}

是否可以使用更简洁的代码来打印 vector ?以 algorithm 中的内容为例。谢谢。

Output:

6 8

10 12

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

最佳答案

一种方法是使用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,循环更易于阅读。

关于c++ - cout vector<vector<int>> 更简洁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48540059/

相关文章:

c++清除特定位置后的文件内容

c++ - 有2个类,如何在上面的类中使用下面类的对象?

c++ - Asio 没有收到来自远程系统的回复

c++ - 尝试创建 SceneNode 时分配抽象类类型的对象

C++ 在与完美转发相同的语句中多次访问右值引用

c++ - 如何使用静态多态性在 int 和指针类型之间进行转换?

c++ - 在 TBB 中使用递归、基于任务的并行编程获得不同的输出?

c++ - 在 C++ 中定义虚拟 get 和 set 函数被认为是一种好的做法吗?

c++11 - 使用统一初始化不危险吗?

c++ - libc++ vs libstdc++ std::is_move_assignable:哪个最正确?