c.back() 使用场景

  • c.back() 是用来访问容器的 最后一个元素
  • 它 返回容器中的最后一个元素的引用,允许你直接修改容器的最后一个元素。
  • 你可以通过 c.back() 获取容器的最后一个元素,不需要关心容器的大小或迭代器的位置。
使用时机:

使用时机:

两者的关键区别在于,c.back() 给你容器的 实际元素,而 c.end() 是一个 标记,表示容器的结束位置。

  • 当你只需要 访问或修改容器的最后一个元素 时,使用 c.back()
  • 注意:如果容器为空,调用 c.back() 会导致未定义行为,所以在使用前最好确认容器不为空。
    #include <iostream>
    #include <vector>
    using namespace std;
    
    int main() {
        vector<int> v = {1, 2, 3, 4, 5};
    
        // 获取最后一个元素
        cout << "Last element: " << v.back() << endl;  // 输出 5
    
        // 修改最后一个元素
        v.back() = 10;
        cout << "Modified last element: " << v.back() << endl;  // 输出 10
    
        return 0;
    }
    

    c.end() 使用场景

  • c.end() 返回的是 指向容器末尾之后位置的迭代器,它并不指向容器的实际元素。
  • c.end() 主要用于遍历容器时作为 结束条件 或者标记容器的 "past-the-end" 位置。
  • c.end() 主要用于 迭代容器,通常在 for 循环中用作结束条件。
  • 你不能直接解引用 c.end(),因为它指向容器末尾之后的位置。
    • 它常与 c.begin() 配合使用,用于遍历容器。
      #include <iostream>
      #include <vector>
      using namespace std;
      
      int main() {
          vector<int> v = {1, 2, 3, 4, 5};
      
          // 使用 c.end() 和 c.begin() 进行遍历
          for (auto it = v.begin(); it != v.end(); ++it) {
              cout << *it << " ";  // 输出容器中的每个元素
          }
          cout << endl;
      
          return 0;
      }
      

      在这个例子中,v.begin() 返回容器的第一个元素的迭代器,v.end() 返回指向容器最后一个元素之后位置的迭代器,用作遍历的终止条件。

      总结:

    • c.back() 用于访问容器的最后一个元素。它返回对该元素的引用,可以修改该元素。

      • 使用场景:需要获取或修改容器最后一个元素时。
      • 注意:容器为空时不能调用 c.back(),会导致未定义行为。
    • c.end() 用于获取指向容器末尾后一个位置的迭代器。通常用作遍历容器的结束标志。

      • 使用场景:用于容器遍历,作为结束条件。
      • 注意c.end() 不能解引用,它并不指向容器中的任何元素。
Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐