c++ - 二维容器的通用打印
问题描述
此模板打印 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 维容器、字符串等?)
解决方案
只需采用任何类型并使用基于范围的循环。您唯一的问题是您指定的是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 来消除这个潜在的问题,但我只会为库代码这样做。
推荐阅读
- php - 带有“继续阅读”文本的加载屏幕
- python - 将时间转换为整数
- java - ConcurrentHashMap 移除键
- php - 获取选择 optgroup 名称作为 php 中的键
- python - 如何修复 Python Visio 转换器中的 for 循环
- c# - 如何使用 linq 获取两个表的公用表
- java - Java azure-function 部署 bitbucket 管道,给出 NoSuchMethodException。如何解决另一个依赖项目的依赖关系?
- python - 如何在 Pipeline 中使用 LabelEncoder 和随机森林
- python - Pexpect 进程死亡而不是发送命令
- javascript - Instafeed 按标签或帖子排除