成员begin有两个重载,其中一个是const_iterator begin() const;。还有cbegin const_iterator cbegin() const noexcept;。它们都将const_iterator返回到列表的开头。有什么不同?

最佳答案

begin将返回iteratorconst_iterator,具体取决于调用对象的const-qual。
cbegin将无条件返回const_iterator

std::vector<int> vec;
const std::vector<int> const_vec;

vec.begin(); //iterator
vec.cbegin(); //const_iterator

const_vec.begin(); //const_iterator
const_vec.cbegin(); //const_iterator

10-07 13:27