std :: iterator的运算符

时间:2016-11-03 20:33:11

标签: c++ stl iterator

我假设迭代器已经重载了它们的operator +和operator-来返回一个迭代器。我还假设迭代器重载了运算符int(),它进行了以下编译:

std::vector<int> v;
v.push_back(1);
v.push_back(2);
v.push_back(3);

std::vector<int>::iterator low = std::lower_bound(v.begin(), v.end(), 2);

int i = low - v.begin();

但是当我尝试将结果分配给迭代器而不是int时,我得到了编译错误:

std::vector<int>::iterator i = low - v.begin();

为什么不从迭代器中的另一个结果中减去迭代器?

我无法在cplusplus.com/reference或其他任何地方找到任何关于迭代器接口包含的信息。

1 个答案:

答案 0 :(得分:4)

&#34;为什么不从迭代器中的另一个结果中减去迭代器?&#34;

为什么减去2个指针不会产生另一个指针。

如果有什么我希望它以包含元素为单位返回2个迭代器之间的距离 - 即int

并且快速测试表明它确实返回距离

vector<int> test;
test.push_back(1);
  test.push_back(2);
int d = test.begin() - test.end();
cout << d;
return 0;

说:-2