首页 > 解决方案 > 二维容器的通用打印

问题描述

此模板打印 2D 矢量的内容

您将如何概括此模板以使其适用于每个 STL 容器?

template<class T> void printVector(std::vector<std::vector<T>> const &matrix) { for (std::vector<T> row : matrix) { for (T val : row) { std::cout << val << " "; } std::cout << '\n'; } }

是否有“打印”可以让我打印任何东西,无论我放入什么?(n 维容器、字符串等?)

标签: c++

解决方案


只需采用任何类型并使用基于范围的循环。您唯一的问题是您指定的是std::vector.

template<class T>
void print2Dcontainer(const T &matrix)
{
    for (const auto &row : matrix)
    {
        for (const auto &val : row) std::cout << val << ' ';
        std::cout << '\n';
    }
}

我上面的版本对于传递会导致编译错误的东西(例如传递 7)没有安全性。可以添加花哨的 SFINAE 来消除这个潜在的问题,但我只会为库代码这样做。


推荐阅读