我在C++地图中有一个基本查询,
map<char,string> mymap;
mymap['a']="an element";
mymap['b']="another element";
mymap['c']=mymap['b'];
cout << "mymap['a'] is " << mymap['a'] << endl;
cout << "mymap['b'] is " << mymap['b'] << endl;
cout << "mymap['c'] is " << mymap['c'] << endl;
cout << "mymap['d'] is " << mymap['d'] << endl;
Run Code Online (Sandbox Code Playgroud)
当我们尝试访问mymap ['d']时,我得到一个默认值,因为运算符使用该键在地图中插入一个新元素并初始化为其默认值,即使访问该元素只是为了检索其值.下次当我使用迭代器时,我可以看到键'd'的空值.有没有办法限制地图插入默认值.
如果您不想要默认插入,则应使用map.find而不是operator [].
iterator find ( const key_type& x );
const_iterator find ( const key_type& x ) const;
Run Code Online (Sandbox Code Playgroud)
在容器中搜索x为键的元素,如果找到则返回迭代器,否则返回map :: end(超过容器末尾的元素)的迭代器