gcc C++のマップを逆に反復するのに問題があります。逆の反復子を使うと、何かを割り当てることができないようだ。コンパイラは不平を言う。私は順方向イテレータを使用していくつかの厄介なコードでそれを回避しようとしていますが、あまりエレガントではありません。何かご意見は?C++のマップを逆に反復する方法
17
A
答えて
36
はここstd::map
を逆方向に反復処理の例です:
#include <iostream>
#include <map>
#include <string>
int main() {
std::map<std::string, std::string> m;
m["a"] = "1";
m["b"] = "2";
m["c"] = "3";
for (auto iter = m.rbegin(); iter != m.rend(); ++iter) {
std::cout << iter->first << ": " << iter->second << std::endl;
}
}
あなたは事前にC++ 11であれば、あなたがある、auto
を綴るするだけ必要があります:
std::map<std::string, std::string>::reverse_iterator
ブーストを使用している場合は、逆アダプタで範囲ベースのforループを使用できます。
#include <boost/range/adaptor/reversed.hpp>
for (auto& iter : boost::adaptors::reverse(m)) {
std::cout << iter.first << ": " << iter.second << std::endl;
}
関連する問題
- 1. mvelでマップを反復する方法
- 2. C++のSTLマップのサブセットを反復する方法
- 3. LinkedList要素を逆順に反復処理する方法は?
- 4. QValueList逆反復子
- 5. xmlファイルを反復してマップに保存する方法
- 6. Pythonでマップの要素を反復する方法
- 7. c#逆の順序でハッシュテーブルを反復する
- 8. Pythonのマップ機能反復
- 9. Haskell - リスト要素を逆順にエレメントで反復する方法は?
- 10. C++のLPBYTEの各バイトを反復する方法
- 11. C++のテンプレート反復子、逆参照、およびtypedef
- 12. C#で辞書<string、string>を逆順(最後から最初)に反復する方法は?
- 13. C#を使用して "関連リンク"を反復する方法
- 14. 反復ニュートンの方法
- 15. C++でユニコード文字を反復処理する方法は?
- 16. C#でテーブル反復から値を取得する方法
- 17. リストを反復して、逆シリアル化されたJSON C#ASP.NETから変数を生成する方法
- 18. キャッシュエントリを反復する方法
- 19. coreDataインスタンスをクリック/反復する方法
- 20. SAFEARRAY **を反復する方法
- 21. JSONハッシュマップを反復する方法
- 22. リストを値として持つマップを反復処理する方法は?
- 23. C++マップの反復処理の相違点
- 24. イテレータを使用して反復可能な関数をC++にマップする
- 25. java/JSPでのマップの反復
- 26. SortedDictionaryを逆方向に反復処理する最良の方法は何ですか?
- 27. C++の点リストを反復する
- 28. intをC言語で反復するときに0を得る方法
- 29. マップの逆を別のマップにコピーする方法はありますか?
- 30. 反復処理中にListItemをリストに追加する方法(C#)
あなたが話してくれなかったことは、あなたがしたいことです。 – tpdi
リバースイテレーターを使用していても、rbeginとrendではなくbeginとendを呼び出しているようなサウンドです。 GManのソリューションは、あなたが探しているものかもしれません。しかし、いくつかのコードを投稿すると、私たちがあなたを助けるのに役立ちます。 – Smashery
ありがとうございました - 私はrbegin/rendを試したと思っていましたが、なんとか自分が絡んでいるはずです。 –