0
語境:我實現推送Relable算法MaxFlow在網絡中,並希望保持所有節點的標籤的軌道,爲每個可能的標籤(2*V-1
很多)我想有一個包含具有該標籤的節點的雙向鏈表。存儲和管理的std ::目錄::迭代器
所以我有一個向量,其中每個條目是一個列表。現在我需要從一個列表中刪除一個元素,並將其移動到另一個向量條目中的另一個列表中。 爲了做到這一點,我使用的載體(至極大小等於元件的數量),其中每個條目是一個迭代符,所以總是知道各元件的位置。 在更大規模實施之前,我想試試它是否可行。所以我創建了兩個向量,將一個元素添加到列表中,將迭代器存儲在另一個向量中,並嘗試再次刪除該元素。 但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