如何实现如下的二维数组
如何实现如下的二维数组
0,
1,2,
3,4,5,
6,7,8,9
它的列数不固定,行数不固定,用STL可以实现吗?
[解决办法]
仅供参考
//在堆中开辟一个4×5的二维int数组
#include <stdio.h>
#include <malloc.h>
int **p;
int i,j;
void main() {
p=(int **)malloc(4*sizeof(int *));
if (NULL==p) return;
for (i=0;i<4;i++) {
p[i]=(int *)malloc(5*sizeof(int));
if (NULL==p[i]) return;
}
for (i=0;i<4;i++) {
for (j=0;j<5;j++) {
p[i][j]=i*5+j;
}
}
for (i=0;i<4;i++) {
for (j=0;j<5;j++) {
printf(" %2d",p[i][j]);
}
printf("\n");
}
for (i=0;i<4;i++) {
free(p[i]);
}
free(p);
}
// 0 1 2 3 4
// 5 6 7 8 9
// 10 11 12 13 14
// 15 16 17 18 19
//C:
//1)
int x1[]={0};
int x2[]={1,2};
int x3[]={3,4,5};
int x4[]={6,7,8,9};
int ** p={&x1,&x2,&x3,&p4};
int i,j;
for(i=0;i<=3;i++){
for(j=0;j<=i;j++){
printf("%4d,"p[i][j]);
}
}
//2)
int x[]={0,1,2,3,4,5,6,7,8,9};
int ** p={&x,&(x+1),&(x+3),&(x+6)};
int i,j;
for(i=0;i<=3;i++){
for(j=0;j<=i;j++){
printf("%4d,"p[i][j]);
}
}
//C++ :
//3)
vector< vector <int> >v;
int i,j,k;
k=0;
v.resize(4);
for(i=1;i<=4;i++){
v[i-1].reserve(i)
for(j=0;j<i;j++){
v[i-1].push_back(k);
}
}
for(i=1;i<=4;i++){
for(j=0;j<i;j++){
printf("%4d,"p[i][j]);
}
}