如何在c+中创建连续的2d数组?我想要创建一个函数,在C+中返回一个连续的2D数组。使用以下命令创建数组没有问题: int (*v)[cols] = new (int[rows][cols]);但是,我不知道如何将这个数组作为函数的一般类型返回。其职能是: NOT_SURE_WHAT_TYPE create_array(int rows, int cols)
{
int (*v)[cols] = new (int[rows][cols]);
return v;
}我试过双倍和双倍,但两者都不起作用。我不想使用Double*,因为我想以2D数组的形式从外部访问这个数组。有关问题:如何使用New在C+中声明2d数组?
3 回答
慕娘9325324
TA贡献1783条经验 获得超4个赞
rows*cols
int
std::vector<T>
template<class T>class Array2D { vector<T> data; size_t cols;public: // This is the surrogate object for the second-level indexing template <class U> class Array2DIndexer { size_t offset; vector<U> &data; public: Array2DIndexer(size_t o, vector<U> &dt) : offset(o), data(dt) {} // Second-level indexing is done in this function T& operator[](size_t index) { return data[offset+index]; } }; Array2D(size_t r, size_t c) : data (r*c), cols(c) {} // First-level indexing is done in this function. Array2DIndexer<T> operator[](size_t index) { return Array2DIndexer<T>(index*cols, data); }};
Array2D<int>
Array2D<int> a2d(10, 20);for (int r = 0 ; r != 10 ; r++) { for (int c = 0 ; c != 20 ; c++) { a2d[r][c] = r+2*c+1; }}
- 3 回答
- 0 关注
- 560 浏览
添加回答
举报
0/150
提交
取消