我们假设我的代码中有一张地图:
map <string, set<string> > myMap;
...我想从地图中获取一个元素:
myMap.find("key");
我的问题是:如果&#34;键&#34; myMap会返回什么样的值?不存在? `
/// EDIT 任何人都可以指出错误的原因吗?编译器没有看到任何错误,但服务器测试整个算法,由于这个功能,它不接受它。
map< string, set<string> >::iterator mapIterator = container.find(key);
if(mapIterator != container.end()){
set<string>::iterator setIterator = mapIterator->second.begin();
if(!mapIterator->second.empty()){
while(setIterator != mapIterator->second.end()){
cout << *setIterator << endl;
++setIterator;
}
}else{
.......
}
}else{
..........
}
答案 0 :(得分:2)
它返回一个等于myMap.end()
的迭代器。您可以轻松地测试:
auto it = myMap.find("key");
if (it == myMap.end())
{
std::cout << "key not found\n";
}
答案 1 :(得分:2)
http://en.cppreference.com/w/cpp/container/map/find
find返回一个迭代器,所以如果该键不存在,则返回一个结束迭代器。
例如:
std::map< int, int > some_map;
if ( some_map.find( 10 ) != some_map.end() )
{
... key exists ...
}
else
{
... key does not exist ...
}
答案 2 :(得分:0)
std::map::find
会返回等于map.end()
的迭代器(或const_iterator)。
返回值
使用等效于键的键的元素的迭代器。如果不 找到这样的元素,返回末尾(参见end())迭代器。
http://en.cppreference.com/w/cpp/container/map/find
示例:
std::map<std::string, int> m;
if( m.find( searchedString) != m.end()) {
//... present
} else {
//... not found
}
答案 3 :(得分:0)
指向集合末尾的迭代器。对于所有stl容器都是如此。使用
检查值map <string, set<string> > myMap;
map <string, set<string> > :: iterator iter = myMap.find( "x" );
if( iter != myMap.end())
{
// ... do something
}