为什么我可以这样做
vector<int> a;
//...
cout << a.end()-a.begin();
Run Code Online (Sandbox Code Playgroud)
但是我不能用 set::iterator 做同样的事情吗?
为什么 vector::iterator 和 set::iterator 的工作方式不同?
因为一个容器具有快速随机访问,而另一个则没有。因为结果,一个迭代器是随机访问迭代器,而另一个不是。双向迭代器不保证支持减法。
您可以实现std::distance与所有输入迭代器相同的效果。但是您需要注意它对于非随机访问迭代器具有线性复杂度。
| 归档时间: |
|
| 查看次数: |
88 次 |
| 最近记录: |