【发布时间】:2016-07-18 12:25:33
【问题描述】:
例如
vector< set<int> > MY_VECTOR_SETS;
MY_VECTOR_SETS[0].insert(1);
我正在尝试在MY_VECTOR_SETS 中插入第一个零。
【问题讨论】:
-
首先你需要将一个集合推回你的向量
-
...或在使用前致电
resize()。
例如
vector< set<int> > MY_VECTOR_SETS;
MY_VECTOR_SETS[0].insert(1);
我正在尝试在MY_VECTOR_SETS 中插入第一个零。
【问题讨论】:
resize()。
我更喜欢在给向量赋值之前使用 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
【讨论】:
vector< set<int> > MY_VECTOR_SETS(5);?
为什么当我尝试插入集合向量时,它告诉我“向量下标超出范围”?
因为您正在尝试访问向量中不存在的集合。
默认构造向量为空。因此,第零索引处没有对象。尝试访问不存在的对象具有未定义的行为。
解决方案:在尝试访问第一个集合之前,请确保该向量至少包含一个集合。也许最简单的方法是使用创建非空向量的非默认构造函数之一。
【讨论】: