如何在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条经验 获得超5个赞
rows*colsint
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 关注
- 640 浏览
添加回答
举报
0/150
提交
取消
