怎么用C++中的Vector来代替 声明 数组中的 2维数组??

2025-01-31 18:56:46
推荐回答(4个)
回答1:

vector里面嵌套vector就可以了。

如下:(x就是有65个vector的相当于2维数组的玩意儿)

#include
#include

using std::vector;
using std::cout;
using std::endl;

int main()
{
vector > x;

for (int i = 0; i < 65; ++i)
{
x.push_back(vector(65));
}

int count = 0;
for (int i = 0; i < x.size(); ++i)
{
for (int j = 0; j < x[i].size(); ++j)
{
cout << x[i][j] << endl;
++count;
}
}

cout << "Count is :" << count << endl;
}

同时请主意,这个和2维数组有个很大的不同就是,它的任意两个一维数组都几乎不是连续存储的。(相信你应该理解2维数组是由很多个连续存储的一维数组构成的)。

举个例子就是在你的二维数组里, a[0][64]和 a[1][0] 在内存里是紧挨的, 我的vector的 x[0][64] 和 x[1][0]就不是。

如:

#include
#include

using std::vector;
using std::cout;
using std::endl;

int main()
{
int a[65][65] = {0};

vector > x;

// 使x成为类似a[65][65]
for (int i = 0; i < 65; ++i)
{
x.push_back(vector(65));
}

cout << "Address of a[0][64]:" << &a[0][64] << endl;
cout << "Address of a[1][0]:" << &a[1][0] << endl;
cout << "Address of x[0][64]:" << &x[0][64] << endl;
cout << "Address of x[1][0]:" << &x[1][0] << endl;
}

回答2:

采用vector嵌套 比如 vector< vector > v
采用这种方法 相当于是动态的二维数组

回答3:

定义:
vector > d(1000);

调用:
d[3].push_back(3);
cout<

回答4:

vector> 即可