如何在C++中使用多维交错数组
How do I use multidimensional jagged array in C++?
我不熟悉C++中的多维交错数组。我对如何在C++中使用多维交错数组感到困惑。请考虑以下代码:
int** s=new int*[2];
s[0]=新整数[3];
s[1]=新整数[4];
上面的语句是否意味着我已经声明了有 2 行的数组,第一行有 3 列,第二行有 4 列?如何遍历数组?意味着如何显示此数组的所有元素?如何为特定的行和列分配特定值。例如,我想将值 9 分配给 1 行第二列。我该怎么做?最后如何使用删除运算符释放内存?
请帮助我。您的帮助将不胜感激。
上面的语句是否意味着我已经声明了具有 2 的数组 行 & 第一行有 3 列,第二行有 4 列?
在此声明中
int** s = new int*[2];
您声明了一个 int **
类型的对象,并通过动态分配的两个类型为 int *
的元素数组的第一个元素的地址对其进行初始化
如何遍历数组?意味着我如何显示所有 这个数组的元素?
您必须将动态分配的每个一维数组(行)中的元素数量保留在某个位置。例如,您可以有一个包含这些数字的附加数组。
这是一个演示程序
#include <iostream>
int main()
{
const size_t N = 2;
int size[N] = { 3, 4 };
int **a = new int*[N];
a[0] = new int[ size[0] ] { 1, 2, 3 };
a[1] = new int[ size[1] ] { 4, 5, 6, 7 } ;
for ( int i = 0; i < N; i++)
{
for ( int j = 0; j < size[i]; j++ ) std::cout << a[i][j] << ' ';
std::cout << std::endl;
}
for ( int i = 0; i < N; i++ ) delete [] a[i];
delete [] a;
return 0;
}
程序输出为
1 2 3
4 5 6 7
您可以使用标准类std::vector
代替数组。 例如
#include <iostream>
#include <vector>
int main()
{
const size_t N = 2;
std::vector<std::vector<int>> v;
v.reserve( N );
v.push_back( { 1, 2, 3 } );
v.push_back( { 4, 5, 6, 7 } ) ;
for ( const auto &row : v )
{
for ( int x : row ) std::cout << x << ' ';
std::cout << std::endl;
}
return 0;
}
输出将如上所示。
相关文章:
- Mongodb c++驱动程序:如何查询元素的数组
- 将数组的地址分配给变量并删除
- 从C++本机插件更新Vector3数组
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 数组索引的值没有增加
- 将对象数组的引用传递给函数
- 为char数组调整zlib-zpipe
- 2D数组来自文本输入,中间有空格
- std::向量与传递值的动态数组
- 在c++中用vector填充一个简单的动态数组
- 使用strcpy将char数组的元素复制到另一个数组
- 使用指针从C++中的数组中获取最大值
- C++使用整数的压缩数组初始化对象
- 告诉一个 const char 数组,除了编译时 C 样式的字符串外,它不以 '