简介
我正在尝试创建一个幂等函数。 为此,我检查地图上是否有内容,之后可能需要添加内容。
代码
std::map<char,int> mymap;
std::map<char,int>::iterator it;
mymap['a']=50;
it = mymap.find('a');
int value = it->second;
问题1 我如何知道it
值是否不是null
?如何获得迭代器的值?
问题2 我如何知道it->second
值是否不是null
?
问题3 我如何返回null
值并将其与std::string / container
进行比较?
示例问题3
if(get_client_from_map(id) == nullptr){
// do anything
}else{
// code anything here too
}
注意:get_client_from_map(id)返回(it-&gt; second)结果,它可以是std :: string或null / nullptr。
答案 0 :(得分:1)
问题1我如何知道它的值是否为空?如何获得迭代器的值?
如果您查看了std :: map.find http://www.cplusplus.com/reference/map/map/find/的文档,如果找不到具有指定键的元素,您将看到它返回end()
。
问题2我如何知道它是否&gt;第二个值不为空?
由于您使用int
作为映射值,因此该值永远不会为null,与[]
一起使用时,ints在地图中初始化为零,否则只需检查它if(it->second) { // not null}
。
问题3如何返回空值并将其与std :: string进行比较?
使用空字符串。
答案 1 :(得分:1)
我如何知道它的值是否为空?如何获得迭代器的值?
如果找不到,std::map::find将返回std::map::end()。
我如何知道它是否&gt;第二个值不为空?
它不能是nullptr,因为它是int
。
我如何返回null值并将其与std :: string / container进行比较?
如果您想返回nullptr
,则值类型必须是某种指针,例如int *
或std::string *
。