STLマップからキーを削除したいと思います。しかし、map.erase()
は何もしません。 どうすればいいですか?C++マップからキーを削除
32
A
答えて
50
これは電話の方法によって異なりますが、first,last
オプションを使用しているようです。もしあなたがそうであるならば、それはfirst
から始めて、(last
を除く)まで要素を消去することを覚えておく必要があります。このルールに従えば、イテレータベースの削除は、単一の要素または範囲のいずれかとしてうまくいくはずです。
キーで消去している場合は、キーが当然存在するものと仮定しても機能します。出力
#include <iostream>
#include <map>
int main (void) {
std::map<char,char> mymap;
std::map<char,char>::iterator it;
mymap['a'] = 'A'; mymap['b'] = 'B'; mymap['c'] = 'C';
mymap['d'] = 'D'; mymap['e'] = 'E'; mymap['f'] = 'F';
mymap['g'] = 'G'; mymap['h'] = 'H'; mymap['i'] = 'I';
it = mymap.find ('b'); // by iterator (b), leaves acdefghi.
mymap.erase (it);
it = mymap.find ('e'); // by range (e-i), leaves acd.
mymap.erase (it, mymap.end());
mymap.erase ('a'); // by key (a), leaves cd.
mymap.erase ('z'); // invalid key (none), leaves cd.
for (it = mymap.begin(); it != mymap.end(); it++)
std::cout << (*it).first << " => " << (*it).second << '\n';
return 0;
}
:
次のサンプルコードは、動作中のすべての3つのメソッドを示し
c => C
d => D
+0
私は 'const key_type&'のオーバーライドを見逃してしまったので気が気になりません。それを指摘してくれてありがとう! –
4
あなたはイテレータを見つけるしなければならないの最初
map.erase(ITERATOR) ;
へこれを安全にするには、ITERATしかし、ORは存在する。例:
#include <stdio.h>
#include <map>
using namespace std ;
int main()
{
map<int,int> m ;
m.insert(make_pair(1,1)) ;
map<int,int>::iterator iter = m.find(1) ;
if(iter != m.end())
m.erase(iter);
else puts("not found") ;
}
関連する問題
- 1. Hiveマップからキーと値のペアを削除しますか?
- 2. マップからポリゴンを削除
- 3. Mule - Groovyコンポーネントのマップから特定のキーを削除する
- 4. Groovyマップから指定キーを削除する
- 5. レジストリからキーを削除
- 6. マップから矩形を削除する
- 7. Googleマップから長方形を削除
- 8. Googleマップからプラカードを削除iframe
- 9. MapBoxマップから情報ボタンを削除
- 10. Googleマップからポリラインを削除する
- 11. jqで親オブジェクトからキーを削除
- 12. 辞書からキーを削除
- 13. セレクタからのキーの削除
- 14. カスタム削除ボタン付きのGoogleマップからマーカーを削除する
- 15. viモードで削除キーを削除
- 16. Googleマップからすべてのマーカーを削除する方法mapview.clear(ios objective-c)
- 17. jsonオブジェクトからスカラからキー、値を削除する
- 18. データソースからアイテムを削除せずにリストからアイテムを削除する - c#
- 19. 削除キーを使用してDataGridから行を削除する方法
- 20. マップ - データの削除
- 21. C#コレクションリストオブジェクトからアイテムを削除する
- 22. C#ディレクトリからエスケープシーケンスを削除する
- 23. Cリンクリストからノードを削除する
- 24. C#からデータベースを削除する
- 25. C++アプリケーションからアプリケーションベリファイアを削除する
- 26. リストからアイテムを削除する - C#
- 27. Cのファイルから文字を削除
- 28. C++でHDDからパーティションテーブルを削除
- 29. CノードのBSTからノードを削除
- 30. C - バイナリツリーからノードを削除する
何か消去します。どうやって使ってるの?それが何もしていないとあなたが信じさせるのは何ですか? –
map.erase(key)。 –
私の2番目の質問に? –