簡體   English   中英

我如何在C ++中使用指向此元素的指針來擦除元素表單列表

[英]how i can erase an element form list using pointer to this element in c++

typedef struct  value 
{
    char* contents;
    int size;
}Value;

hash_map<Key,list<Value>,hash<Key>,eqKey> dspace;
hash_map<Key, list<Value>, hash<Key>, eqKey>::iterator itr;
list<Value> vallist;
list<Value>::iterator valitr;
Value * ptr;
itr=dspace.find(searchKey);
valitr=(itr->second).begin();
valitr++;
ptr=&*valitr;

這里的ptr指針指向由valitr迭代器指向的元素的地址。 現在,我想使用此指針從列表中刪除此元素。 我發現list.erase函數可以做到這一點,但我必須提供位置或迭代器。

請給我一些想法,我該如何使用指針而不是通過列表來擦除此元素。

valitr表示列表中的位置。 *valitr取消引用迭代器,為您提供對該指針的值數據的引用,該指針不再對其存儲的列表進行任何引用。

如果您需要確實在列表中刪除某個元素,而不是僅僅去的第二個元素,你要掃描列表(從begin()end()並檢查條件尋找元素,並使用erase使用該元素的迭代器。

列表的API並不打算通過指針刪除元素。 您需要迭代器。

根據您使用的實現,可能有多種方法可以從指針獲取元素的插入器,但這不能保證。 而且以后可能會改變。

嘗試以某種方式保留迭代器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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