[英]vector iterators incompatible
我有一些课我想要使用大量的向量。
class Bar {
Bar ();
std::vector<Foo> * _grid;
void someFunction ();
}
Bar::Bar () {
_grid = (std::vector<Foo> *)malloc(_gridSize * sizeof(std::vector<Foo>);
memset(_grid, 0, _gridSize * sizeof(std::vector<Foo>);
}
void Bar::someFunction () {
int index = 0;
std::vector<Foo> someVariable = _grid[index];
}
但是,只要我调用someFunction()
, _grid[index]
有一些内容,我就会得到一个vector iterators incompatible
错误消息。 如果向量为空,则可以。
我已经读过由无效的迭代器生成的错误消息,但是,因为此时我没有对向量进行任何更改,所以我不会在这里得到什么错误。
你几乎肯定不想动态分配向量; 只需将其作为班级成员包括在内:
class Bar {
std::vector<Foo> _grid;
};
如果你真的想动态分配向量,你想使用new
来构造向量。 正如现在所写的那样,你可以为vector提供malloc
空间,并将向量占用的所有字节设置为零。 你永远不会为分配的对象调用std::vector
构造函数,因此你不能将它用作std::vector
。
确保你有一本很好的入门C ++书籍来学习这门语言。 如果您不了解C ++内存模型和对象模型,那么现在您可以编写正确的C ++代码。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.