0
map <int, string> rollCallRegister;
map <int, string> :: iterator rollCallRegisterIter;

pair <map <int, string> , bool> returnPair;

rollCallRegister.insert (pair <int, string> (1, "anisha"));

このコードでpair <map <int, string> , bool> returnPair;は、このペアが最初の値としてマップ行を取り、2番目の値としてboolをとることを意味します。

質問
ここにブール値を挿入する方法:rollCallRegister.insert (pair <int, string> (1, "anisha"));

次に、pair <map <int, string> :: iterator, bool> returnPair;このペアは最初の入力としてマップのイテレータを取ります。

質問
挿入方法は同じなので、これは前のペア構文とどのように異なりますrollCallRegister.insert (pair <int, string> (1, "anisha"));か?

4

3 に答える 3

2

aの最初の値はマップ行でpair<map<int, string >, bool>なく、マップ全体です(したがって、おそらく探しているものではありません)。一方、2番目のペアは、マップエントリをブール値に関連付けます。

挿入に関して、私はあなたの質問を本当に得ません:両方のサンプルで、あなたはに挿入していmap<int, string>ます。定義するさまざまなタイプのペアとは何の関係もありません。これらの2種類のペアのインスタンスを作成するmapには、最初のケースではa、2番目のケースではイテレータが必要です。

pair<map<string, int>, bool> p1(rollCallRegister, true);
pair<map<string, int>::iterator, bool> p2(rollCallRegisterIter, false);

編集:

あなたの質問に対するあなたのコメントに基づいて、あなたは地図の内容( )と( )pair<string, int>によって返される値を混同していると思います。insertpair<map<string, int>::iterator, bool>

を宣言するとmap<K,V>、その内容はに保存されpair<K,V>ます。したがって、このマップに新しいエントリを挿入するには、挿入するキーと値を含むペアを作成する必要があります。

map<K,V> myMap;
pair<K,V> myEntry(key, value); // entry to insert

myMap.insert(myEntry);         //or you can create the entry on-the-fly
myMap.insert(make_pair(key, value));

これで、マップにエントリを挿入するときに、キーがすでに存在している可能性があります。この場合、挿入は「失敗」するはずです。への呼び出し後もinsert、キーは以前の値に関連付けられたままです。ただし、発信者は、マップにすでに存在するキーを使用してエントリを挿入しようとしたことを警告する必要があります。

これは、をinsert返すことによって実現されpair<map<K,V>::iterator, bool>ます。このペアの2番目の値は、挿入が発生したかどうか(キーがマップにまだ存在していなかったかどうか)を示すブール値です。最初の値は、キーに対応するエントリへのイテレータです。このエントリには、キーとそれに関連する値(挿入したばかりの値、またはすでに存在する値)が含まれています。

于 2012-01-12T09:16:48.590 に答える
1

現在のフォームでは、キーとしてint、値として文字列のみを使用するため、 boolrollCallRegisterに挿入することもできません。

rollCallRegisterマップに(int、string)のペアをキーとしてboolを値として含める場合は、次のように変更する必要があります。

map <pair<int, string>, bool> rollCallRegister;
rollCallRegister.insert(std::make_pair(std::make_pair(yourint, yourstring), true/false));
于 2012-01-12T09:11:31.077 に答える
0

かなり些細なこと:pair<pair <int, string>, bool>。ただし、調査することをお勧めしますmake_pair

于 2012-01-12T09:12:46.467 に答える