簡體   English   中英

std :: iterator的運算子

[英]Operators of std::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上找到任何信息,也無法在迭代器的接口所包含的任何其他地方找到任何信息。

“為什么不從另一個結果中減去一個迭代器會導致迭代器出現?”

為什么這樣做,減去2個指針不會導致另一個指針。

如果有什么期望的話,它會返回兩個迭代器之間的距離,以包含元素為單位-即一個int

快速測試表明它確實返回了距離

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

說:-2

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM