所以,我想了解是否允许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