所以,我想了解是否允許const_iterator(即不可變)按值返回。可能迭代器的運算符*按值返回?
我發現的是,返回類型*r
應該是reference
(1)其中reference
是iterator_traits<X>::reference
(2)。命名清楚地表明它通常應該是引用類型,但它是否必須?
有沒有在這方面不同的iterator範疇之間有什麼區別?我所有的指向標準的鏈接(見下面)都是針對n3242(我相信最後的C++ 11草案),但是我也很想知道C++版本之間的區別(如果有的話)。
(1)24.2.2.2
(2)24.2.1.11
一個'const_iterator'應該返回一個'常量&'這樣你就沒有昂貴的複製操作。 – NathanOliver 2015-02-23 17:50:29
'vector'指向包裝器的迭代器。所以是的。 –
Jarod42
2015-02-23 17:50:45
@NathanOliver,重點不在於複製,而在於返回位於迭代器中的值。 – RiaD 2015-02-23 17:51:44