std::map<int, X>
のある点をupper_bound経由で見つけ、この時点から逆向きに繰り返します。戻り値をupper_boundからreverse_iteratorに代入
MAP::reverse_iterator iter;
iter = _map.upper_bound(value); // Does not compile because upper_bound is not reverse_iterator
while(iter != rbegin()){
// logic
--iter;
}
UPPER_BOUNDは()reverse_iteratorを返さないので、私はコンパイルエラーを取得:私のコードは次のように見えます。
これを改善するための最良の方法は何ですか? _map.rend()
、ない_map.rbegin()
に到達したときに、あなたが持っている
auto iter = _map.upper_bound(value);
for (std::reverse_iterator<decltype(iter)> rit{iter}; rit != _map.rend(); ++rit) {
// Do whatever you want...
}
注意を停止し、そしてあなたはそれをデクリメントない、逆反復子をインクリメントする必要があります。
イテレータを逆イテレータに変換しますか? – NathanOliver
@NathanOliverは、それが可能であることに気づかなかった。あなたが答えとしてそれを置くなら、私は受け入れます。 – user997112