簡體   English   中英

是矢量 <int> :: const_iterator是output_iterator?

[英]Is vector<int>::const_iterator an output_iterator?

根據C ++概念:

除了input_iterator以外的任何迭代器都是output_iterator。

vector<int>::const_iteratorrandom_access_iterator ,當然是output_iterator

但是,根據cppreference.comoutput_iterator必須可寫,而vector<int>::const_iterator不可寫。

vector<int>::const_iteratoroutput_iterator嗎?

另請參見: 如何檢查迭代器在c ++中是否為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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM