使用vector来实现多维数组。
已知数组大小
已经知道数组大小的话可以通过下面方式来创建数组。
- 数组
int myArray[3][4];
- vector
std::vector<std::vector<int>> vec(13, std::vector<int>(7, 2));
未知数组大小
int func(const std::vector<std::vector<int>> & data) {
size_t ordinate = data.size();
size_t abscissa = data[0].size();
int myArray2[ordinate][abscissa]; //array实现
int myArray3[ordinate][abscissa] = {
{0}}; //error
std::vector<std::vector<int>> vec(ordinate, std::vector<int>(abscissa, 5)); //vector实现
for (int i = 0; i < ordinate; ++i) {
for (int j = 0; j < abscissa; ++j) {
std::cout << "array[" << i << "][" << j << "] = " << myArray2[i][j] << "\n";
std::cout << "vec[" << i << "][" << j << "] = " << vec[i][j] << "\n";
}
}
int row = ordinate + 3;
int collom = abscissa + 3;
vec.resize(row, std::vector<int>(collom, 7)); //resize 改变数组大小
for (int i = 0; i < row; ++i) {
for (int j = 0; j < collom; ++j) {
// std::cout << "array[" << i << "][" << j << "] = " << myArray2[i][j] << "\n";
std::cout << "vec[" << i << "][" << j << "] = " << vec[i][j] << "\n";
}
}
return 0;
}
当然vector也可以通过resize来改变数组的大小,代码中resize后修改数组的值是什么样的呢?可以实际执行一下看一看是不是和预想的一样 。。。