2011-04-13 71 views
2

只要該元素沒有從列表中刪除,將參考存儲在std::list中是否安全?我從this中看到存儲列表迭代器是安全的,但對於直接引用也是如此?存儲對列表元素的引用是否安全?

例如

list<int> mylist; 
mylist.push_back(3); 
int& myint = *mylist.begin(); 

// modfy mylist 

cout << "myint: " << myint << endl; 

myint始終是有效的,只要我不從列表中刪除嗎?

+0

它編譯?我相信它應該是'int&myint = * mylist.begin()' – a1ex07 2011-04-13 01:58:49

回答

7

只要不從列表中刪除該元素,是否可以將對元素的引用存儲在std::list中是否安全?

是的。插入和刪除不會使std::list中元素的引用或迭代器無效(當然,除去元素的引用和迭代器不再有效)。

+0

請添加參考。 – ideawu 2014-03-12 17:05:53

+0

也許是這樣:http://kera.name/articles/2011/06/iterator-invalidation-rules/ – ideawu 2014-03-12 17:11:20

4

是的,它是安全的。元素不會移動,所以引用只會在與迭代器相同的情況下失效。

相關問題