イテレータが演算子+と演算子 - をオーバーロードしてイテレータを返すと仮定しました。私はまた、イテレータがオーバーロードしていたことを、次のコンパイル製のオペレータは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など、イテレータのインターフェイスに正確に何か情報が含まれています。
他の2つのイテレータの違いはイテレータのセマンティクスとは何でしょうか? – user888379
コンパイルエラーを通知する必要があります。また、2つのイテレータを減算するとイテレータが返された場合、単純なポインタ(イテレータと見なされます)がお互いに減算されると、あなたのロジックでポインタが生成されます。しかし、そうではありません。 – PaulMcKenzie
距離関数があります戻り値要素数が2イテレータの間です –