簡單問題:是否有任何STL容器允許我在常量時間內刪除當前迭代器的位置?
在此先感謝!stl容器中的常量移除元素
0
A
回答
2
複雜
1)的常數。
2)線性在第一個和最後一個之間的距離。
其中,對於情況2,您使用擦除元素的範圍。
從文檔,std::list<T>::erase
看起來是這樣的:
//(1)
iterator erase(iterator pos);
iterator erase(const_iterator pos);
//(2)
iterator erase(iterator first, iterator last);
iterator erase(const_iterator first, const_iterator last);
另一個是std::forward_list(不完全一樣的,因爲它只有erase_after
)
2
至少std :: list允許在一段時間內擦除元素。
1
如果您不需要維持秩序您可以使用std::vector
的元素以及「交換和彈出」 - 您將要刪除的元素與矢量中的最後一個元素交換,然後彈出新的最後一個元素。
相關問題
- 1. 移動STL容器中的元素是否將其從該容器中移除?
- 2. STL容器移動選定的元素
- 3. 什麼是STL容器來執行元素之間的移除?
- 4. STL容器插入元素
- 5. 常量和STL容器
- 6. stl容器中的搜索元素
- 7. 從STL容器中移除元素時調用析構函數嗎?
- 8. 量角器從dom中移除元素
- 9. 回到STL容器元素的參考
- 10. STL容器,從兩個容器中移除對象
- 11. C++ - 如何從STL容器有效的條件刪除元素?
- 12. STL容器元素銷燬順序
- 13. 使用元素鍵迭代STL容器
- 14. 向STL容器背面添加元素
- 15. 常量和非const在STL容器
- 16. C++ 11 STL容器內shared_pointer常量性
- 17. STL關聯容器:清除並獲取(不可複製)元素
- 18. 將迭代器返回到STL容器中的元素
- 19. 從父容器應用於元素的強制寬度中移除元素
- 20. 從容器中移除元素的單一聲明方法
- 21. Eclipse CDT無法解析STL容器中元素的方法
- 22. 檢查stl容器中元素的類型 - C++
- 23. 清除列表容器中的元素
- 24. 從STL容器中移除東西而不解構它
- 25. 使用std :: remove_reference獲取STL容器的元素迭代器
- 26. 移除device_vector中的元素
- 27. Final元素移除元素
- 28. C++:從容器中移除元素並將其取回
- 29. 移動列表元素在STL
- 30. Jsoup,從元素中移除元素
'std :: list' http://en.cppreference.com/w/cpp/container/list/erase – Raxvan
注意:如果您支持其他操作,請考慮(測量)'vector'。雙鏈表有很多開銷 –
值得注意的是,任何非排序的容器都可以在任何位置使用容器末尾(或開始處)的元素交換元素,然後刪除最後一個/第一個元素。這允許在恆定時間內進行刪除,只要交換容器的value_type可以在不變的時間內完成。此技術已在[本次發言中](https://youtu.be/oBbGC-sUYVA?t=155)在CppCon 2016 – Pandatyr