重複の可能性:
std::list の push_back が、rbegin で初期化された逆反復子を変更するのはなぜですか?
次のようなコードを取得しました。
#include <iostream>
#include <list>
int main(){
std::list<int> l;
l.push_back(1);
l.push_back(2);
std::list<int>::iterator it = l.begin();
std::cout << *it << std::endl; // 1
l.push_front(0);
std::cout << *it << std::endl; // 1
std::list<int>::reverse_iterator rit = l.rbegin();
std::cout << *rit << std::endl; // 2
l.push_back(3);
std::cout << *rit << std::endl; // 3
}
出力:
1
1
2
3
フォワード iterator を定義した後it
、 を呼び出しpush_front()
ても、の位置はit
変わらないようです。しかし、reverse_iterator を定義した後でrit
を呼び出すと、 WILLpush_back()
の位置が変わります。rit
これは矛盾と考えるべきでしょうか?片方が動き、もう片方が同じままというのは、私にはまったく意味がありません。
前もって感謝します。:)