簡體   English   中英

矢量迭代器不兼容

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM