如何在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 關注
- 615 瀏覽
添加回答
舉報
0/150
提交
取消
