短横杠-的含义

猛地看到it - vec.begin()竟看不懂这是什么,还以为是和.或者->一样新的运算符。故而总结:

  1. 减法运算符
  2. 取负运算符
  3. 指针加减运算符
    可以计算两个指针之间的距离
    1
    2
    3
    4
    int arr[] = {1, 2, 3, 4, 5};
    int *ptr1 = &arr[0];
    int *ptr2 = &arr[2];
    int distance = ptr2 - ptr1; // 结果为 2
  4. 迭代器之间的差值
    1
    2
    3
    4
    std::vector<int> vec = {1, 2, 3, 4, 5};
    auto it1 = vec.begin();
    auto it2 = vec.begin() + 2;
    int distance = it2 - it1; // 结果为 2
    类似于指针的距离,因为vec.begin()可以认为是一个指针,指向第0元素的位置,即*vec.begin()==1.vec.end()指向第5个元素的位置,即*(vec.end()-1)==6
  5. 可以重载自定义