这个**向量的矢量是否正确?,如何在所有向量中打印出所有值

时间:2016-04-19 14:22:23

标签: c++ vector

简而言之,矢量矢量的定义是否正确?

// Create a dynamic vector which contain another 3 vectors 
vector<int> **list = new vector<int>*[3]();
// Create and initialize vectors that related to a vector  
for (unsigned short i = 0; i < 3; i++) {
    list[i] = new vector<int>(i);
}

现在我要打印出所有载体中的所有元素。

for (unsigned short i = 0; i < 3; i++) {
    for (unsigned short io = 0; io < 3; io++) {
        cout << list[i]->at(io) << endl;
    }
    cout << "/n";
}

但是会出现以下运行时错误。

1 个答案:

答案 0 :(得分:4)

你的代码错了:

// Create a dynamic vector which contain another 3 vectors 
vector<int> **list = new vector<int>*[3]();

不,这会创建一个包含vector<int>*的3个指针的数组。

// Create and initialize vectors that related to a vector  
for (unsigned short i = 0; i < 3; i++) {
    list[i] = new vector<int>(i);
}

是的,但是......你真的希望你的第一个矢量的大小为0,你的第二个大小是1,......?

cout << list[i]->at(io) << endl;

您确实初始化了list[i] vector<int>*,因此list[i]->at是正确的,但由于您的第一个向量的大小为0,因此此代码失败。

你可能想要的是 *

vector<vector<int>> list(3, vector<int>(3));

初始化包含3 vector的{​​{1}},每个{3}包含3个int(3x3矩阵)。

* 如果您使用c ++ 03,请使用vector<int>

然后你可以迭代(并且只获得vector< vector<int> >作为输出,因为你没有将它初始化为其他任何东西):

0

或者更好的基于范围的循环(c ++ 11):

for (unsigned short i = 0; i < 3; i++) {
    for (unsigned short io = 0; io < 3; io++) {
        cout << list[i][io] << endl;
    }
    cout << "/n"; // Should be "\n"
}