読者です 読者をやめる 読者になる 読者になる

for each バグ

VC++

map / unordered_map を for each 文でループして

要素を const 参照で受け取ったらキーが消えました

#include <iostream>
#include <string>
#include <map> // or <unordered_map>

using namespace std;

int main()
{
    map<string, int> dict; // or unordered_map<string, int>

    dict["Akira"]   = 23;
    dict["Johnny"]  = 38;
    dict["Millia"]  = 16;

    for each (const pair<string, int>& item in dict) {
        cout << item.first << "," << item.second << endl;
    }
    // ,23
    // ,38
    // ,16

    return 0;
}

VC++8.0(2005) 〜 VC++9.0(2008) SP1 Beta で確認


バグ報告済み

C++ for each 文で std::map を使うとキーが消える