C++mapの使用時に注意しなければならない小さな問題

2525 ワード

私达はc++mapがkeyとvalの2つの変数に分けてマッピングする関系があることを知っています今日问题を书く时またこの问题に出会って、、実は省试合の时に出会って、、、长い时间をカードして、记录を书いて、2日后に更に深くSTLを研究して、、、
キー値がmapに現れたかどうかを判断し、ifを使用して判断した場合:
注意このkey値がmapに現れないと私たちの使用によってmapがこの値を記録します.このときcount関数を使って出現回数をクエリーすると、戻り結果は1つになりますが、私たちはこの値を挿入していません.つまりmapを使ってこのkey値と接触すると忠実に記録されます.またcountは真の値を返し,対応するval値がないため対応するvalは0である.
では、私たちがテーマを書くときにmapの自減を使って値をゼロや負数に減らすことができますifで判断することができますが、countを使うときは増減してもずっと存在しますよ.真値QWQに戻ります.
しかしif i fを使用するとmapのkeyにはすでにこのkeyがあり、mapを出力するとこの値が見つかります.
以下は判断のコード
#include
using namespace std;

int main() {

    map<int, int> mp;
    mp[1]++;
    mp[2]++;

    cout << mp[3] << endl;

    cout << mp.count(3) << "-----
"
; cout << mp.count(2) << "-----
"
; if(mp[3]) cout << "3_yes
"
; if(mp[2]) cout << "2_yes
"
; cout << mp.count(3) << endl; cout << mp.count(2) << endl; mp[3]--; cout << mp.count(3) << endl; cout << mp[3] << endl; cout << mp[2] << endl; return 0; }