短横杠-的含义
猛地看到it - vec.begin()
竟看不懂这是什么,还以为是和.
或者->
一样新的运算符。故而总结:
- 减法运算符
- 取负运算符
- 指针加减运算符
可以计算两个指针之间的距离1
2
3
4int arr[] = {1, 2, 3, 4, 5};
int *ptr1 = &arr[0];
int *ptr2 = &arr[2];
int distance = ptr2 - ptr1; // 结果为 2 - 迭代器之间的差值类似于指针的距离,因为
1
2
3
4std::vector<int> vec = {1, 2, 3, 4, 5};
auto it1 = vec.begin();
auto it2 = vec.begin() + 2;
int distance = it2 - it1; // 结果为 2vec.begin()
可以认为是一个指针,指向第0元素的位置,即*vec.begin()
==1.vec.end()
指向第5个元素的位置,即*(vec.end()-1)
==6 - 可以重载自定义