c++ - 如何在C++中创建一个n行5列的数组,但是n值在变化
问题描述
我有这段代码,我想在其中创建一个具有 nx 5 个值的动态二维数组 -
int** bump = new int*[b_bump_num];
for(int i = 0; i < b_bump_num; i++) {
bump[i] = new int[5];
}
for(int i = 0; i < b_bump_num; i++) {
delete[] bump[i];
}
delete[] bump;
但我面临这个错误 -
*error:表达式必须包含指针类型-倒数第三行-bump[i]
解决方案
这可能就是你所需要的——
方法 1:使用简单的二维数组
#include <iostream>
using namespace std;
int main()
{
int dimension1, dimension2 = 5;
cout << "Enter first dimension : " << endl;
cin >> dimension1;
// dynamic allocation
int** array2d = new int*[dimension1];
for(int i = 0; i < dimension1; ++i)
array2d[i] = new int[dimension2];
/*
// you may fill it with your values
for(int i = 0; i < dimension1; ++i)
for(int j = 0; j < dimension2; ++j)
array2d[i][j] = i;
*/
// print
for(int i = 0; i < dimension1; ++i) {
for(int j = 0; j < dimension2; ++j) {
cout << array2d[i][j] << " ";
}
cout << endl;
}
// free
for(int i = 0; i < dimension1; ++i)
delete [] array2d[i];
delete [] array2d;
return 0;
}
样本输出:
Enter first dimension :
4
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
方法 2:使用向量 -
#include <iostream>
#include <vector>
using namespace std;
int main()
{
// size of row
int rowSize;
int colSize = 5;
cout << "Enter row size : ";
cin >> rowSize;
// Create a vector of vector with size equal to rowSize; filled with 0.
vector<vector<int>> vec(rowSize, vector<int>(colSize));
for (int i = 0; i < rowSize; i++) {
for (int j = 0; j < vec[i].size(); j++)
cout << vec[i][j] << " ";
cout << endl;
}
vec.clear();
return 0;
}
样本输出:
Enter row size : 3
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
推荐阅读
- apache-spark - 火花数据框模式覆盖将数据复制到表中
- linux-kernel - do_patch:功能失败:patch_do_patch -- 运行 bitbake
- r - 如何在 R 中格式化弹出窗口(vistime/plotly plot)
- variables - 在 SAS 中为文件路径组合两个字符串
- c - 将 c 代码与裸函数混合的替代方案
- python - 访问 __main__ 中的变量
- php - 如何在 woocommerce 产品页面中显示您节省的百分比和价格
- javascript - 如何将二维数组从 Javascript 传递给 Java 中的 Spring Boot 函数?
- microsoft-graph-api - Azure CLI - 是否会更新“az ad”以使用 Microsoft Graph API?
- c - 文本加密仅适用于小写,大写字母不变