如何在c+中創(chuàng)建連續(xù)的2d數組?我想要創(chuàng)建一個函數,在C+中返回一個連續(xù)的2D數組。使用以下命令創(chuàng)建數組沒有問題: 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 關注
- 601 瀏覽
添加回答
舉報
0/150
提交
取消