表达式:向量下标超出范围C ++?

时间:2013-11-07 07:56:06

标签: c++

我正在尝试访问变量,并将其打印出来。但是,我遇到Vector subscript out of range错误。

我在做

cout << myStruct->myVector[0].GetCoordinate(0) << endl;

,其中 myStruct指向包含向量myVector点的结构。所以我试图打印出它的第一个坐标。


要调试:

cout << typeid(myStruct->myVector[0].GetCoordinate(0)).name() << endl;

给了我

float

cout << sizeof(myStruct->myVector[0].GetCoordinate(0)) << endl;

给了我

4

然而,当我直接打印其值

cout << myStruct->myVector[0].GetCoordinate(0) << endl;

错误讯息:

enter image description here

2 个答案:

答案 0 :(得分:3)

你的矢量是空的。任何不在0.size()之间的索引(不包括后者)超出范围。由于00之间没有索引,因此每个索引都超出范围。

您需要先填充矢量,例如使用.resize.push_back

答案 1 :(得分:1)

由以下原因引起的问题:

tlen = __byte_encode_array(buf, offset + pos, maxlen - pos, &this->data[0], this->size);

无法访问向量中的不存在元素。