如何确定是否设置了std :: map存储中的元素? 例如:
#include <map>
#include <string>
using namespace std;
map<string, FOO_class> storage;
storage["foo_el"] = FOO_class();
有类似if (storage.isset("foo_el"))
的内容吗?
答案 0 :(得分:5)
尝试storage.find("foo_el") != storage.end();
。
答案 1 :(得分:5)
if (storage.count("foo_el"))
count()
返回容器中项目的多次出现,但地图每个键只能出现一次。因此,如果项目存在,则storage.count("foo_el")
为1,否则为0。
答案 2 :(得分:1)
std :: map operator []很讨厌:如果它不存在,它会创建一个条目,首先是map :: find。
如果要插入或修改
std::pair<map::iterator, bool> insert = map.insert(map::value_type(a, b));
if( ! insert.second) {
// Modify insert.first
}
答案 3 :(得分:0)
您还可以在插入新的键值对时检查迭代器:
std::map<char,int> mymap;
mymap.insert ( std::pair<char,int>('a',100) );
std::pair<std::map<char,int>::iterator,bool> ret;
ret = mymap.insert ( std::pair<char,int>('a',500) );
if (ret.second==false) {
std::cout << "element is already existed";
std::cout << " with a value of " << ret.first->second << '\n';
}