[英]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.