Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/124.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
vector.at()阻塞,尽管索引容量不足 我在Debian 7.0.0. 中使用CODBOLDEX 10.05开发C++应用程序_C++_Std_Stdvector - Fatal编程技术网

vector.at()阻塞,尽管索引容量不足 我在Debian 7.0.0. 中使用CODBOLDEX 10.05开发C++应用程序

vector.at()阻塞,尽管索引容量不足 我在Debian 7.0.0. 中使用CODBOLDEX 10.05开发C++应用程序,c++,std,stdvector,C++,Std,Stdvector,我这样分配空间给一个向量 std::vector<double> dpMeanUnnormalizedRef; dpMeanUnnormalizedRef.reserve(expectedUpperLimit); 此时,索引的大小为0,容量为621,而索引的值为0。但是,此调用会导致程序抛出超出范围的异常。reserve只是为项目保留物理空间,而不实际将它们添加到向量中。当您提前知道向量有多大时,它旨在通过减少重新分配的次数来提高效率。您需要使用resizereserve只保留项目

我这样分配空间给一个向量

std::vector<double> dpMeanUnnormalizedRef;
dpMeanUnnormalizedRef.reserve(expectedUpperLimit);

此时,索引的大小为0,容量为621,而索引的值为0。但是,此调用会导致程序抛出超出范围的异常。

reserve
只是为项目保留物理空间,而不实际将它们添加到向量中。当您提前知道向量有多大时,它旨在通过减少重新分配的次数来提高效率。您需要使用
resize

reserve
只保留项目的物理空间,而不实际将其添加到向量中。当您提前知道向量有多大时,它旨在通过减少重新分配的次数来提高效率。您需要使用
resize

正如Mark所说,
reserve
仅帮助
vector
管理其内存,它实际上并不添加元素,您可以使用
assign

而不是

dpMeanUnnormalizedRef.reserve(expectedUpperLimit);
使用


您还可以使用
调整大小
或构造函数本身。

正如Mark所说,
保留
仅帮助
向量
管理其内存,它实际上不添加元素,您可以使用
分配

而不是

dpMeanUnnormalizedRef.reserve(expectedUpperLimit);
使用


您也可以使用
resize
或构造函数本身。

也许您需要
std::map
。这样,您就可以只添加您想要的索引。“容量不足索引”?为了使
at
工作,索引必须小于大小,而不是小于容量。也许您希望改为
std::map
。这样,您就可以只添加您想要的索引。“容量不足索引”?为了使
at
工作,索引必须小于大小,而不是小于容量。
dpMeanUnnormalizedRef.assign(expectedUpperLimit,0.0);