Pie*_*ter 3 c++ arrays dynamic
我按如下方式分配了一个数组.
#include <iostream>
int main() {
const int first_dim = 3;
const int second_dim = 2;
// Allocate array and populate with dummy data
int** myArray = new int*[first_dim];
for (int i = 0; i < first_dim; i++) {
myArray[i] = new int[second_dim];
for (int j = 0; j < second_dim; j++) {
myArray[i][j] = i*second_dim + j;
std::cout << "[i = " << i << ", j = " << j << "] Value: " << myArray[i][j] << "\n";
}
}
// De-allocate array
for (int i = 0; i < first_dim; i++)
delete[] myArray[i];
delete[] myArray;
}
Run Code Online (Sandbox Code Playgroud)
假设我想在第一维中添加第4个元素,即myArray[3].这可能吗?
我听说过Vector对于这个目的来说效率要高得多,但我几乎不知道它们是什么,我以前从未使用它们.
是的,但是非常痛苦.你需要做的是分配新的内存,它现在有你想要的新尺寸,在这种情况下是4和2,然后将矩阵的所有内容复制到你的新矩阵,然后释放前一个矩阵的内存...那是痛苦.现在让我们看看向量是如何完成的:
#include <vector>
using std::vector;
int main()
{
vector< vector <int> > matrix;
matrix.resize(3);
for(int i = 0; i < 3; ++i)
matrix[i].resize(2);
matrix[0][1] = 4;
//...
//now you want to make the first dimension 4? Piece of cake
matrix.resize(4);
matrix[3].resize(2);
}
Run Code Online (Sandbox Code Playgroud)
HTH
编辑: 对原始代码的一些评论:
delete [] array[i];,delete [] array;所以编译器知道你试图删除的int*和int**实际上指向一个数组,而不仅仅是一个int或int*.| 归档时间: |
|
| 查看次数: |
989 次 |
| 最近记录: |