如何從C++中的iterator
獲取const_iterator
?來自insert_iterator
怎麼樣?由此產生的iterator
應該指向原來的位置。C++迭代器到const_iterator
15
A
回答
22
容器須提供iterator
的類型轉換爲const_iterator
,這樣你就可以隱式轉換:
Container::iterator it = /* blah */;
Container::const_iterator cit = it;
std::insert_iterator
s爲輸出迭代器。這沒有辦法將它們轉換爲常規Container::iterator
,它必須是前向迭代器。
另一種插入迭代器可能允許這樣的事情,但那些從標準函數中獲得的不是。
我想你可以圍繞編寫您自己的包裝std::insert_iterator
暴露出保護成員iter
,雖然:
template <typename Container>
class exposing_insert_iterator : public std::insert_iterator<Container> {
public:
exposing_insert_iterator(std::insert_iterator<Container> it)
: std::insert_iterator<Container>(it) {}
typename Container::iterator get_iterator() const {
return std::insert_iterator<Container>::iter;
}
};
// ...
std::insert_iterator<Container> ins_it;
exposing_insert_iterator<Container> exp_it = ins_it;
Container::iterator it = exp_it.get_iterator();
4
你可以將它們轉換。例如:
std::vector<int> v;
std::vector<int>::iterator it = v.begin();
std::vector<int>::const_iterator cit = it;
但我想這不是你正在尋找的答案。給我看代碼。 :-)
相關問題
- 1. 的const_iterator到迭代器C++錯誤
- 2. 從迭代器中獲取const_iterator
- 3. 自己的容器類的C++迭代器和const_iterator問題
- 4. 迭代器和const_iterator之間的比較效率低下嗎?
- 5. 什麼時候將const_iterator聲明爲一個常量迭代器?
- 6. 如何檢測類型是否是迭代器或const_iterator
- 7. C++迭代器
- 8. 如何將DRY原理應用於C++中的迭代器? (iterator,const_iterator,reverse_iterator,const_reverse_iterator)
- 9. C++ - 迭代器迭代器不編譯
- 10. 異類迭代器的C++迭代器
- 11. LevelDB C迭代器
- 12. C++流迭代器
- 13. C++迭代器類
- 14. 迭代器無故迭代C++
- 15. C++容器的迭代器
- 16. 轉換一個C++迭代到迭代器上的部件(選擇迭代?)
- 17. C++流迭代器VS容器迭代器
- 18. 迭代器的迭代器
- 19. 傳遞地圖<>:迭代作爲地圖<> ::爲const_iterator&
- 20. C++ STL迭代器接口
- 21. C++迭代器做什麼?
- 22. MovePrevious&MoveNext迭代器在C#
- 23. C#5 ReadAsync和迭代器
- 24. C++讀取txt迭代器
- 25. C++迭代器列表
- 26. C++ 11迭代器接口
- 27. 什麼是迭代器,C++?
- 28. C++迭代器錯誤
- 29. C++中的迭代器
- 30. 測試C++迭代器
鑄造不起作用? – Pubby
@ Pubby8:甚至不需要演員! –
呵呵,我一定搞不清楚了。當我嘗試隱式轉換它們時,我認爲出現了編譯器錯誤。 –