std::unordered_map<K,T>
提供像find
這樣的方法,返回std::unordered_map<K,T>::iterator
。據我所知,一個迭代器保持有效,除非重新哈哈發生。C++:從值類型指針轉換爲包含迭代器
但我懷疑的是,沒有用於雙向傳遞::iterator
沒有保證的方式 - >T *
- >::iterator
,類似於「黑客」,也就是在Linux做鏈表。我認爲這是因爲迭代器只需要通過->second
可解引用,但我沒有看到在容器內部需要持久存儲類型。
那麼,我說得對嗎?我是否需要保留迭代器,或者以後是T *ptr = &myiterator->second
可重新映射到其成員地址爲ptr
的迭代器指針?
這個問題自然也適用於其他容器的迭代器。
您必須存儲迭代器。 –
並非每個迭代器都會產生T * – 4pie0
@computer:您的意思是,'&myiterator-> second'不需要產生存儲在容器中的實際值的地址? –