c++ - vector 的 cbegin 和 begin 有什么区别?

标签 c++ vector stl iterator

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

最佳答案

begin 将返回 iteratorconst_iterator,具体取决于调用它的对象的 const 限定。

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

关于c++ - vector 的 cbegin 和 begin 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31208640/

相关文章:

c++ - 将指针转换为 STL 中的反向 vector 迭代器

c++ - 将 packaged_task 移动到 lambda

c++ - 是否可以将迭代器作为索引返回?

r - 我正在尝试为向量赋值,我尝试了循环,但它不起作用?

Java:从 Vector 中删除自定义对象

C++:尝试使用等效的 STL 算法消除原始循环

c++ - 使用 new 时将指针转换为 void* 的优势

C++:如何在 UI 线程和 worker std::thread 之间使用 std::condition_variable

c++ - 在 Qt 中使用正则表达式查找两个标签之间的字符串

c++ - 在扩展期间将 vector 成员插入 vector : vector. push_back(vector[0])