向量数组C ++ - 添加元素时的奇怪行为

时间:2012-12-05 17:14:14

标签: c++ arrays vector

谷歌和stackoverflow搜索

无法帮助我,我别无选择,只能向你们寻求帮助。

我想使用一个向量数组 - 我知道这个数组只需要包含两个向量。因此

vector<double> testVect[1];

现在,当我想将数组添加到数组中包含的第一个向量时,我使用

testVect[0].push_back(0);

到目前为止一切似乎都没问题 - 遗憾的是,在第一个向量中添加一个元素也会在第二个向量中添加相同的元素(在本例中为0)。

有人能告诉我这种行为的原因吗? (请) - 也许是一种解决方法。 目前我必须使用Visual Studio 6(雇主不会安装新的编译器 - 我已经惹恼了我的同事:D

1 个答案:

答案 0 :(得分:16)

如果你想要两个向量,你应该声明:

 vector<double> testVect[2];

然后在代码中使用testVect[0]testVect[1]

您应该在编译器上启用所有警告。

顺便说一句,您可以使用最近的GCC编译器(例如4.7)安装最新的Linux发行版,并将其作为g++ -Wall -g运行,如果您静态访问testVect,它肯定会警告您边界,好像你似乎已经有了。

GNU / Linux和GCC都是免费的,所以你的经理可能会很开心。