[英]Destruction via const iterators in C++11
以http://en.cppreference.com/w/cpp/container/vector/erase為例。 為什么簽名從使用非const迭代器變為const-iterators,因為操作確實通過提供的迭代器修改了容器?
我認為這是非const迭代器的定義。 改變背后的原因是什么?
如果您已經擁有對容器的非const訪問權限( erase
是非const成員函數),則只能執行erase
。
鑒於此,您可能已經將const_iterator
轉換為iterator
(可能使用distance
和advance
效率低下),因此您無法獲得任何額外的訪問權限。
作為const的迭代器意味着迭代器指向的元素不能通過該迭代器進行修改。 這並不意味着容器本身不能使用迭代器的信息修改這些內容。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.