📜  打印向量的向量 c++ (1)

📅  最后修改于: 2023-12-03 15:10:01.762000             🧑  作者: Mango

打印向量的向量

在c++中,我们可以使用一些STL容器来存储和处理向量,其中vector是其中最常用的一个。在某些情况下,我们可能需要打印一个向量的向量,也就是一个二维数组。本文将介绍如何使用vector打印一个向量的向量。

方法一:双层循环

最简单的方法是使用双层循环。我们可以使用两个嵌套的for循环来遍历二维向量,并使用cout打印每个元素。

#include <iostream>
#include <vector>

int main()
{
    std::vector<std::vector<int>> vec{{1, 2}, {3, 4}, {5, 6}};

    for (const auto& inner : vec)
    {
        for (const auto& num : inner)
        {
            std::cout << num << " ";
        }
        std::cout << std::endl;
    }

    return 0;
}

注意:在外部循环中,我们使用了const auto&来遍历每个二维向量。这是因为我们不希望修改它们。在内部循环中,我们同样使用了const auto&,因为我们不会修改每个二维向量中的元素。

此代码片段将输出以下内容:

1 2
3 4
5 6
方法二:使用算法库

如果你不喜欢使用双层循环,还可以使用算法库中的函数来打印二维向量。我们可以使用std::for_each()std::ostream_iterator来实现。

#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>

int main()
{
    std::vector<std::vector<int>> vec{{1, 2}, {3, 4}, {5, 6}};

    for_each(vec.begin(), vec.end(), [](auto& inner) {
        std::copy(inner.begin(), inner.end(), std::ostream_iterator<int>(std::cout, " "));
        std::cout << std::endl;
    });

    return 0;
}

此代码片段将输出以下内容:

1 2 
3 4 
5 6 
总结

使用以上方法,你可以方便地打印出一个向量的向量。双层循环是最简单和直接的方法,而使用算法库则可以更加优雅地实现。无论你选择哪一种方法,都应该使用C++11中的范围for循环和lambda表达式,以此提高代码的可读性和编程效率。