我假設迭代器已經重載了它們的operator +和operator-來返回一個迭代器。我還假設,迭代器已經超負荷運營商INT(),它做了如下編譯:std :: iterator的運算符
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或任何其他地方的任何信息,正是迭代器的接口包含的內容。
迭代器的語義是兩個其他迭代器的區別是什麼? – user888379
你應該發佈編譯器錯誤。另外,如果減去兩個迭代器產生一個迭代器,那麼給定你的邏輯,那麼簡單的指針(它們*被認爲是迭代器)相互相減將產生一個指針。但事實並非如此。 – PaulMcKenzie
有距離函數返回兩個迭代器之間的元素數量 –