矢量库:.begin()、.rbegin()、cbegin()、crbegin() 之间的区别

时间:2021-03-23 15:08:46

标签: c++ vector

我不明白

之间的区别
  1. .begin() 和 .cbegin()
  2. .rbegin() 和 .crbegin()

我通常只使用 .begin() 和 .end()

1 个答案:

答案 0 :(得分:0)

  • constexpr iterator begin() noexcept;

    返回一个迭代器,当取消引用时返回对非const(可变)元素的引用。

  • constexpr const_iterator cbegin() const noexcept;

    返回一个迭代器,当取消引用时返回对 const(不可变)元素的引用。

  • constexpr const_iterator begin() const noexcept;

    cbegin()。此 begin() 是在调用 begin() 并且 vectorconst 上下文中时选择的重载。

    示例:

    void foo(std::vector<int> const& v) {
        auto it = v.begin(); // uses the last `begin()` because `v` is `const`
    }
    

r 版本是上述的反向版本,可以从 vector 的后面到前面进行迭代。

相关问题