実際、ヒント パラメーターを受け取る挿入メソッドは、挿入が成功したかどうかを返しません。挿入が実際に行われたかどうかを確認する 1 つの方法は、挿入前後のマップのサイズを確認することです。同じである場合、挿入は失敗しています (つまり、キーは既に存在していました)。醜いように聞こえるかもしれませんが、それが私が思いついた最も効率的な方法です。実際、通常のヒントなしの挿入と同じように、ヒント付きの挿入がペア (bool を含む) を返すべきではないという説得力のある理由はないと私は信じています。しかし、一度古い標準で指定されてしまうと、それを変更するのは非常に困難です。これは、C++ コミュニティがほとんど憤慨している重大な変更であるためです。
元の (間違った) 回答
このリンクを参照
... メンバー pair::first
を持つペアを返します 新しく挿入された要素、またはマップ内に既に同じ値を持つ要素のいずれかを指す反復子に設定されます。 pair::second
ペアの要素は、新しい要素が挿入された場合は true に設定され、同じ値を持つ要素が存在した場合は false に設定されます。
リンクには例も含まれています
例:
if(mp.insert(make_pair(key, value)).second == false)
{
cout << "Insertion failed. Key was present"
}
typedef std::map<std::string, int> map;
map m;
std::pair<map::iterator,bool> result = m.insert(std::make_pair("hi", 42));
result.second には必要なものが含まれています
失敗または成功の意味によって異なります。
std::map::insert
新しい要素を挿入すると成功します。それ以外の場合は、既存の要素への反復子を返します。
std::map::insert
新しい要素を挿入するのに十分なメモリがない場合は失敗し、std::bad_alloc
をスローします .
エラー:ソケットをアドレスにバインドしているときに、アドレスは既に使用されていますが、ポート番号は「netstat」によって空いていると表示されます
特定のプロセスの実行時にどの共有ライブラリがロードされているかを確認する方法は?