![](/img/trans.png)
[英]Converting vector<>::const_iterator to vector<>::iterator
[英]Is vector<int>::const_iterator an output_iterator?
根據C ++概念:
除了input_iterator以外的任何迭代器都是output_iterator。
vector<int>::const_iterator
是random_access_iterator
,當然是output_iterator
。
但是,根據cppreference.com , output_iterator
必須可寫,而vector<int>::const_iterator
不可寫。
vector<int>::const_iterator
是output_iterator
嗎?
否vector<int>::const_iterator
是一個常量迭代器 ( [container.requirements.general] ),這意味着它不滿足輸出迭代器的要求。
[iterator.requirements.general] / 4 :
進一步滿足輸出迭代器要求的迭代器稱為可變迭代器 。 不可迭代的迭代器稱為常量迭代器 。
vector :: const_iterator是random_access_iterator,當然是output_iterator。
這是完全錯誤的。
在這里查看: Cpp參考
OutputIterator是可以寫入指向元素的Iterator。
您的報價顯然意味着要說的是,任何不滿足Input Iterator要求的迭代器都是Output迭代器。
迭代器類別的標准層次結構定義(參見24.2.1)具有嵌套需求的以下迭代器類別序列
隨機訪問->雙向->轉發->輸入
而輸出迭代器類別則獨立存在。
這種嵌套意味着每個正向迭代器也是輸入迭代器(即也滿足輸入迭代器類別的要求),每個雙向迭代器同時也是正向和輸入迭代器。 在這種情況下,您應該對您的事物進行解釋。
std::vector::const_iterator
是一個隨機訪問迭代器,它也滿足雙向,正向和輸入迭代器的要求。 即從這個意義上說std::vector::const_iterator
是一個輸入迭代器(!)。 因此,您的報價不能用來推斷它是一個輸出迭代器。
除此之外 ,還可以進一步細分為可變迭代器和非 可變 ( 常量 )迭代器,但是在這種情況下,不必將其引入圖片中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.