对Const容器和普通容器取迭代器的区别
简述
就常规来讲,当我们使用std::begin()函数来取得一个容器的迭代器时,我们会认为不管什么情况下,都会返回一个指向该容器的普通迭代器,但是实际上并不是这样,当我们通过Const&传递实参时,std::begin(const T& container)会返回一个const_iterator,而不是iterator。这一点同样的也在Effective Modern C++的Item 13: Prefer const_iterators to iterators中有所谈及。 具体可以看下述代码演示。
具体演示
可以看到如上述所讲,m_cbegin()所返回的是const_iterator,这里的decltype(auto)则是希望它按照decltype的方式来推导我们的返回类型。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步