Tôi đã viết đoạn mã sau và đã rất ngạc nhiên về đầu ra. Tôi nghe nói rằng <map>
tránh va chạm của các phím, nhưng ở đây nó xuất hiện để cho phép chèn cặp trùng lặp.STL <map> cho phép các cặp trùng lặp?
#include<iostream>
#include<map>
using namespace std;
int main()
{
map<string,char> namemap;
namemap["yogi"]='c';
namemap.insert(pair<string,char>("yogendra",'a'));
namemap.insert(pair<string,char>("yogendra",'b'));
cout<<namemap["yogendra"]<<endl;
return 0;
}
Mã này xuất ra a
. Bạn có thể chạy nó trên C++ Shell.
Tránh va chạm có nghĩa là chúng tôi không thể nhập nhiều cặp với cùng một khóa không?
Bạn mong đợi hành vi nào? Một ngoại lệ? Ghi đè giá trị đầu tiên với giá trị thứ hai? Bỏ qua giá trị thứ hai? Lỗi trình biên dịch? –
Nó được giải thích rõ ràng [ở đây] (http://en.cppreference.com/w/cpp/container/map/insert) – juanchopanza
@juanchopanza: đôi khi tôi muốn RTFM được xem là một câu trả lời đầy đủ: x –