为什么当我试图插入集合的向量时,它告诉我“向量下标超出范围”?

时间:2016-07-18 12:25:34

标签: c++ stl

例如

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

我正试图在MY_VECTOR_SETS为零的情况下插入第一号。

2 个答案:

答案 0 :(得分:0)

我更喜欢在为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

答案 1 :(得分:0)

  

为什么当我试图插入集合向量时,它会告诉我“向量下标超出范围”?

因为您正在尝试访问向量中不存在的集合。

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

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