为什么当我尝试插入到集合向量中时,它会告诉我"vector subscript out of range"?

Why when I'm trying to insert into a vector of sets it's telling me "vector subscript out of range"?

本文关键字:告诉我 vector subscript range of out 插入 向量 集合 为什么      更新时间:2023-10-16

例如

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

我正试图在零的MY_VECTOR_SETS中插入数字1。

在给向量赋值之前,我更喜欢使用方法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

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

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

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

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

相关文章: