本文主要是介绍谨慎使用map的下表操作,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
我们都知道, 当map不存在某key时, 如果用下标操作, 便会产生新key。 因此, 要特别注意, 最近一个同事中招了, 如下:
#include <iostream>
#include <map>
#include <string>
using namespace std;int main()
{map<string, string> m;m["k1"] = "good";// 同事Aif(m["k2"] == ""){cout << "no k2" << endl;// do things}else{cout << "has k2" << endl;// do things}// 同事Bif(m.find("k2") == m.end()){cout << "no k2, to do things" << endl;// do things}else{cout << "has k2, to do things" << endl;// do things}return 0;
}
先说说结果:
no k2
has k2, to do things
这里, 同事A明显是坑了同事B啊。 作为同事A, 不应该这样写代码。 作为同事B, 最好对it->second是否为empty进行判断。 作为程序员, 不要依赖于未知假设。
这篇关于谨慎使用map的下表操作的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!