コンテキスト:MaxFlowのPush-Relableアルゴリズムをネットワーク上で実装していて、すべてのノードのラベルをトラックごとに追跡したいと考えています(2*V-1
多数)そのラベルを持つノードを含む二重リンクリストを持ちます。std :: list :: iteratorの保存と管理
私は各エントリがリストであるベクトルを持っています。今では、あるリストから要素を削除し、それを別のベクトルエントリの別のリストに移動する必要があります。 そうするために、各要素がインターレーターであるベクトル(要素の数に等しいサイズ)を使用するので、私は常に各要素の位置を知っています。 それをもっと大きな規模で実装する前に、私はそれがまったく機能するかどうか試してみたかったのです。したがって、2つのベクトルを作成し、リストに1つの要素を追加し、イテレータを別のベクトルに格納して、その要素を再度削除しようとします。 しかし、std::vector::erase()
メソッドは常にSegFaultsを取得します。私は何か見落としてますか?
int V=50;
int i=0, v=42;
vector<list<int> > B(2*V-1);
vector<list<int>::iterator> itstorage(V) ;
B[i].push_back(v);
itstorage[v]=B[i].end();
B[i].erase(itstorage[v]);
今私は愚かだと感じる。どうもありがとうございました! – PeterGarder