Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/154.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
C++ 为什么当我试图插入一组向量时,它告诉我“向量下标超出范围”?_C++_Stl - Fatal编程技术网

C++ 为什么当我试图插入一组向量时,它告诉我“向量下标超出范围”?

C++ 为什么当我试图插入一组向量时,它告诉我“向量下标超出范围”?,c++,stl,C++,Stl,比如说 vector< set<int> > MY_VECTOR_SETS; MY_VECTOR_SETS[0].insert(1); 我正在尝试将数字1插入我的_VECTOR _零集合。在为向量赋值之前,我更喜欢使用方法resize: MY_VECTOR_SETS.resize(5) //this makes your vector resize to size of 5; MY_VECTOR_SETS[0] = 1; //assign value 1 to firs

比如说

vector< set<int> > MY_VECTOR_SETS;
MY_VECTOR_SETS[0].insert(1);

我正在尝试将数字1插入我的_VECTOR _零集合。

在为向量赋值之前,我更喜欢使用方法resize:

MY_VECTOR_SETS.resize(5) //this makes your vector resize to size of 5;
MY_VECTOR_SETS[0] = 1; //assign value 1 to first element of vector
为什么当我试图插入一组向量时,它告诉我“向量下标超出范围”

因为您试图访问向量中不存在的集合

默认构造的向量为空。因此,零索引处没有对象。尝试访问不存在的对象具有未定义的行为


解决方案:确保向量至少包含一个集合,然后再尝试访问第一个集合。也许最简单的方法是使用一个非默认构造函数来创建一个非空向量。

首先,您需要将一个集合推回到您的向量。。。或者在使用之前调用resize。为什么不直接执行vectorMY_vector_set5;?是的,当你从一开始就知道你需要的尺寸时,你也可以使用它。但是如果你想使用固定大小的数组,你可以只使用常规数组,这样会使你的程序更快。这不是首选项,而是必需的。嗯,是的。但当我需要动态内存分配时,我使用vector,在第一次声明时,我使用size 0。