[英]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.