在动态 2-D 数组中填充 0 的更简洁的方式C++
cleaner way of filling 0's in dynamic 2-D array in C++
int **C = new int*[rows];
for(int i = 0; i < rows; i++){
C[i] = new int[cols];
for(int j = 0; j < cols; j++){
C[i][j] = 0;
}
}
我正在创建动态2-D数组,但是我们可以以某些条目中的0个数组来以某种方式初始化数组,而无需使用内部循环?
如果您改用std::vector
,它将只是
std::vector<std::vector<int>> C(rows, std::vector<int>(cols));
您可以使用值初始化
进行操作int **C = new int*[rows]();
for(int i = 0; i < rows; i++)
{
C[i] = new int[cols]();
}
但是,std ::向量会更好(由于内存管理(。
一个选项是使用std ::填充函数:
int **C = new int*[rows];
for(int i = 0; i < rows; i++)
{
C[i] = new int[cols];
std::fill(C[i], C[i] + cols, 0);
}
using namespace std::placeholders;
std::for_each(C, C + rows, std::bind(std::fill_n<int*, std::size_t, int>, _1, cols, 0));
或经常重复使用:
auto fill_row = [] (int i) { return [=] (int* r) { std::fill_n(r, cols, i); }; };
std::for_each(C, C + rows, fill_row(0));
相关文章:
- 如何在c++中为模板函数实例创建快捷方式
- 在c代码之间共享数据的最佳方式
- 在C++中将函数压缩为两种方式
- 以螺旋方式打印矩阵的程序.(工作不好)
- 为字符串中每 N 个字符插入空格的函数没有按照我认为的方式工作?
- 创建引用向量的优雅方式
- Constexpr替代了新的放置方式,可以让内存中的对象保持未初始化状态
- 使用QQuickFramebufferObject时同步数据的最佳方式是什么
- 不同/较旧的处理器运行c++代码的方式是否不同
- 从嵌套在std::映射中的std::列表中删除元素的最佳方式
- 如果条件为TRUE(最佳方式?),则在do while循环中后置增量
- 重载方法的方式会在使用临时调用时生成编译器错误
- 在reactor中存储eventHandlers的最佳方式是什么
- 如何以优化的方式同时迭代两个间距不相等的数组
- 以线程安全的方式调用"QQuickPaintedItem::updateImage(const QImage&image)"(no QThread)
- 如何以简洁的方式安全地访问容器中的每个第 n 个元素?
- 在动态 2-D 数组中填充 0 的更简洁的方式C++
- 简洁灵活的组成字符串的方式
- 声明多维std::数组的更简洁的方式
- c++中表示等于一组值的简洁方式