谢谢.
unordered_map<int,classA*>testMap;classA* ptr = testMap[1];if(ptr == NulL) testMap[1] = new classA;ORunordered_map<int,classA*>::iterator it = testMap.find(1);if(it == testMap.end()){ testMap.insert(make_pair(1,new classA));}解决方法 这两种方法都不好,因为两者都可以在地图中使用两个查询.
更好的方法是检索对元素的引用,如果该引用是空指针,则分配给它:
classA*& ptr = testMap[1];if (ptr == 0) ptr = new classA;
这是因为查询地图中不存在的元素会自动插入(默认构造,因此将插入空指针),而operator []返回对该元素的引用(无论是新创建还是已存在).
但请注意,此方法(或您的第一种方法)和第二种方法之间的语义巧妙地不同:如果键不存在于地图中,则第二种方法仅插入该元素.我的方法(和你的第一个方法)也创建一个新的元素,如果键实际上已经存在,但它的值是一个空指针.
总结以上是内存溢出为你收集整理的c – 将值分配给unordered_map的基本问题全部内容,希望文章能够帮你解决c – 将值分配给unordered_map的基本问题所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)