【发布时间】:2015-12-17 21:46:43
【问题描述】:
所以我在 C++ 中声明了以下地图:
typedef vector<Vector2D> stackPoints;
typedef map<int, stackPoints> mapPoints;
mapPoints drawingPoints;
给它加值后,我想把里面的所有元素都输出,但是不同关键位置的向量大小不一样:
我正在使用以下两个不起作用的 for 循环。有时程序在运行时崩溃并给我超出范围的向量错误。
for (int j = 0; j < drawingPoints.size(); j++)
{
for (int i = 0; i < drawingPoints[j].size(); i++)
{
cout << "(...)" << endl
}
}
在我看来,内部 for 循环已经经历了恒定的次数,好像以下情况是不可能的:
1) 第一个向量的大小为 1,因此内部的 for 循环将执行一次。
2) 然后地图的第二个向量的大小为 5,现在我希望 for 循环经过 5 次,但这似乎不起作用。
** 编辑 **
我使用整数键作为计数器,所以当我添加另一对时,我将它加 1。
【问题讨论】:
-
drawingPoints[j]获取带有键j的条目,而不是j-th 条目! -
是的,这就是我想要的,不是吗?取决于drawingPoints[ j ]处向量的大小 - 它会发生变化! - 我希望内部 for 循环同样频繁地执行。
-
对于您的编辑,如果 int 只是指示条目数的索引,为什么不直接使用
std::vector<stackPoints>。然后你就可以做你已经做过的事情了。 -
是的,你完全正确,我的错^^
标签: c++ dictionary vector