[英]Deleting STL-container element via iterator only
有沒有一種方法可以僅通過指向要刪除元素的迭代器從STL
容器中刪除元素(它為list
, vector
,...),但不提供其駐留的容器對象(即不直接使用容器成員函數container<T>::iterator container<T>.erase(container<T>::iterator)
嗎?
( 此問題的跟進)
不,這是不可能的。
想象一下,為了使標准提供一種執行此操作的標准,將會發生什么。 std::vector<T>::iterator
不能是簡單的T*
。 相反,它必須包含足夠的信息以使庫能夠“查找”它所屬的向量,例如指向向量本身的指針。 因此,如果標准強加了僅允許刪除迭代器就可以刪除元素的要求,那么它將迫使標准庫增加開銷,從而減慢容器的所有用戶的工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.