今日私は空のmap [null]マップにnull要素を作成することに注意してください。私はそれを期待していませんでした。私はちょうどnullを取得し、要素を作成しませんコンテナのようなマップはありますか?私はすべての[]を.find()に置き換える必要がないと思う。std :: mapは空に挿入されませんか?
答えて
あなたはfind()で立ち往生している。それはちょうどmap
がどのように設計されているのか、その唯一の違いと同じような動作のコンテナはありません。 (または、BoBTFishが言ったように、at
を使用できます)
もう少し詳しく説明すると、NULL値への参照を持つことはできません。これは、要素またはend()を指すイテレータを持つか、または参照を返すか例外をスローするメソッドを持つことができることを意味します。 find()
とat()
の2つのオプションがあります。
@ acidzombie24しかし、std :: mapはキーとしてポインタ以上のものを取るように設計されています... – juanchopanza
好きではない場合はstd::map
に委任する独自のコンテナを作成できますが、異なるconst
の実装はoperator[]
となります。もちろん、参照を返すoperator[]
の全体のポイントは、そのためであることに注意してください:
std::map<Key, Value> theMap;
theMap[someKey] = someValue;
が動作することができます。そうしないと、あなたは何を余儀なくされるだろう:
検索にfind
/
at
を使用してより悪いトレードオフのように思える
theMap.insert(std::make_pair(someKey, someValue)];
。 (または、operator[]
を見つけたアイテムにイテレータを返すことができますが、それはfind
とまったく同じです)
ああ、私は '[]単なる書き込みではなく、読み取り/書き込みです。私はC#インデクサーに甘やかされていると思います。私とその説明を思い出させるための+1 –
- 1. std :: mapに挿入するには?
- 2. std :: mapにboost :: unique_ptrを挿入する
- 3. std :: map:挿入されたキーをコピーして移動できますか?
- 4. 挿入時に構造体を含むstd :: mapにテンプレートクラスを挿入します
- 5. LINQ挿入 - エラーは表示されませんが挿入されません
- 6. std :: mapスレッドセーフでC++ 11を挿入しますか?
- 7. Android:行は挿入されません。
- 8. 新しいstd :: mapエントリはキー挿入だけでどのように初期化されますか?
- 9. std :: mapにtypedefを挿入する際の問題
- 10. std :: mapにデフォルト以外の構成要素を挿入する
- 11. C + + std :: mapに挿入する際の奇妙なバグ
- 12. 挿入時に基づいてstd :: mapから要素を削除します
- 13. std :: iteratorのセットに要素をstd :: listに挿入できません。
- 14. REDISに挿入されたレコードは保存されません
- 15. std :: mapにデータを挿入し、vc6のstd :: mapのデータを表示する方法
- 16. データはsqliteのデータベースに挿入されませんか?
- 17. なぜstd :: map < std::map >はメモリの割り当てを解除しませんか?
- 18. EF6/LINQ MySQL - 挿入されません
- 19. std :: getlineはstd :: back_insert_iteratorを受け入れません
- 20. QtConcurrent :: mapには何も表示されません
- 21. 新しいペアをstd :: map <CString、CString>に挿入します。
- 22. クエリを挿入するとテーブルにデータが挿入されませんが、エラーは発生しません
- 23. PHPはPHPmyAdminのデータベースには挿入されません
- 24. パイソン、Pymysqlは、挿入された行は、データベースにapperません
- 25. sf :: std :: map keyに入れた文字列が機能しません - vauleはマップに保存されません
- 26. RailsとHeroku - Rake db:シードは一部のデータベースにのみ挿入され、他には挿入されません。
- 27. 私のstd :: exchangeは名前空間stdにありませんか?
- 28. std :: unordred_mapは挿入順序を保持していませんか?
- 29. std :: functionラムダラップされたメソッドをstd :: mapから削除する
- 30. std :: map auto balance自体はありません
どのように「null」を取得しますか?セマンティクスは、 'operator []'が参照によって返されることです。 – juanchopanza
'find()'ではなく 'at()'を見てください:http://en.cppreference.com/w/cpp/container/map/at – BoBTFish
@BoBTFishいいです。 –