对Const容器和普通容器取迭代器的区别

简述

就常规来讲,当我们使用std::begin()函数来取得一个容器的迭代器时,我们会认为不管什么情况下,都会返回一个指向该容器的普通迭代器,但是实际上并不是这样,当我们通过Const&传递实参时,std::begin(const T& container)会返回一个const_iterator,而不是iterator。这一点同样的也在Effective Modern C++的Item 13: Prefer const_iterators to iterators中有所谈及。 具体可以看下述代码演示。

具体演示

image
可以看到如上述所讲,m_cbegin()所返回的是const_iterator,这里的decltype(auto)则是希望它按照decltype的方式来推导我们的返回类型。

posted @ 2022-10-05 10:28  相隔半世  阅读(27)  评论(0编辑  收藏  举报