【发布时间】:2012-12-05 17:14:14
【问题描述】:
google 和 stackoverflow 搜索都帮不了我,我只好向你们寻求帮助。
我想使用一个向量数组——我知道这个数组只需要包含两个向量。因此
vector<double> testVect[1];
现在,当我想将一个元素添加到我使用的数组中包含的第一个向量时
testVect[0].push_back(0);
到目前为止,一切似乎都还不错 - 不幸的是,向第一个向量添加一个元素也会以某种方式也将相同的元素(在本例中为 0)添加到第二个向量。
谁能告诉我这种行为的原因? (请)-也许是一种解决方法。 目前我必须使用 Visual Studio 6(雇主不会安装新的编译器 - 我已经激怒了我的同事:D
【问题讨论】:
-
vector<double> testVect[1];只生成一个向量。它是一个向量数组,最大索引为0。是什么让您认为存在第二个元素,或者它也会受到 push_back 的影响? -
我混淆了初始化向量和访问它的元素。在 c++ 中,向量元素开始计数为 0。因此,如果一个向量包含 2 个元素,您将通过向量 [0] 访问第一个元素。这就是为什么我认为编写 testVect[1] 会产生一个包含两个向量的数组。谢谢你:)
-
再次被否决 - 这一次没有明显的原因......有时人们会感到困惑。
-
我猜原因是因为他们认为这个问题“没有得到很好的研究”。不确定我是否同意。
-
我确实首先研究了我的问题!不幸的是,我什至没有想到我只使用 1 elemt 数组,因为似乎禁用了警告。在我的部门中,我是唯一一个编写 C++ 代码的人,这是我的第一个项目。我经常阅读stackoverflow“文章”,你们已经被动地帮助了我很多