#include <unordered_map>
#include <string>
#include <iostream>
#include <algorithm>
#include <utility>
int main()
{
std::unordered_map<string, int> hash {{"a", 1}, {"b", 2}, {"c", 3}};
// CaseA(NO-ERROR)
std::for_each(hash.begin(), hash.end(),
[](const std::pair<string, int>& p) {
std::cout << p.first << " => " << p.second << endl;
}
);
// CaseB(NO-ERROR)
std::for_each(hash.begin(), hash.end(),
[](const std::pair<string, int> p) {
std::cout << p.first << " => " << p.second << endl;
}
);
// CaseC(NO-ERROR)
std::for_each(hash.begin(), hash.end(),
[](std::pair<string, int> p) {
std::cout << p.first << " => " << p.second << endl;
}
);
// CaseD(ERROR)
std::for_each(hash.begin(), hash.end(),
[](std::pair<string, int>& p) {
std::cout << p.first << " => " << p.second << endl;
}
);
}
Q1> CaseD が間違っているのはなぜですか?
Q2> CaseAが推奨されるというのは本当ですか?
ありがとうございました