【发布时间】:2013-05-31 14:50:55
【问题描述】:
我正在使用 Debian 7.0.0 下的 CodeBlocks 10.05 开发 C++ 应用程序。
我因此为向量分配空间。
std::vector<double> dpMeanUnnormalizedRef;
dpMeanUnnormalizedRef.reserve(expectedUpperLimit);
然后我尝试添加一个值。不幸的是,我需要添加值的索引不是连续的,所以我不能使用 push。我第一次尝试添加元素时调用如下。
dpMeanUnnormalizedRef.at(index)=doubleVar;
此时,大小为 0,容量为 621,而 index 的值为 0。然而这个调用导致程序抛出超出范围的异常。
【问题讨论】:
-
也许你想要
std::map<int,double>。这样你就可以只添加你想要的索引。 -
“索引容量不足”?为了使
at工作,索引必须小于 size,而不是小于 capacity。