C++ c++;多重映射相等_范围未找到任何内容

C++ c++;多重映射相等_范围未找到任何内容,c++,multimap,C++,Multimap,我怎么知道equal_range没有找到任何匹配案例 比如: multimap-mapdic; 配对ret; //插入一些字符串对 ret=映射相等范围(大写名称); 如果(???)//如何测试相等的_范围?什么也找不到? { }否则{ } 有人能帮忙吗 谢谢:) 假设您的equal_范围返回类型为的结果 如果您的result.first==result.second则表示没有任何内容 如果只有一个元素,则result.first!=第二个结果 if(ret.first == r

我怎么知道equal_range没有找到任何匹配案例

比如:

multimap-mapdic;
配对ret;
//插入一些字符串对
ret=映射相等范围(大写名称);
如果(???)//如何测试相等的_范围?什么也找不到?
{       
}否则{
}
有人能帮忙吗

谢谢

:)

假设您的equal_范围返回类型为的结果

如果您的
result.first==result.second
则表示没有任何内容

如果只有一个元素,则
result.first!=第二个结果

if(ret.first == ret.second)
{
 // empty range
}
else
{
  //at least an element.
}

基本上与Ajeet的答案相同:)
ret.first==mapdic.end()

也是一条关于你需要什么而不是你想要什么的不请自来的评论。您应该将算法和容器的参数以及返回原理内部化。您应该了解范围的结尾如何在内部是最后一个元素后面的指针。他们可能会吓唬你不要把指针和迭代器混淆起来,但这是任何人真正理解容器和算法接口的唯一方法。本质上是不正确的,
result.first==result。second
是正确的测试,你的测试太具体了。如果Ajeet的测试为真,你的测试可能是错误的。例如,如果equal_range没有找到任何内容,它可以返回result.first==mapdic.begin()和result.second==mapdic.begin(),这在Ajeet的测试中是正确的,但在您的测试中是错误的(假设mapdic是非空的)。它真的可以返回mapdic.begin()?当然,它可以在列表上的任意点返回迭代器,具体取决于您要查找的项。
p=m.equal_range(x)
的定义是,p.first将指向>=x的最低元素,p.second将指向>x的最低元素。如果x小于m中的所有元素,则p.first和p.second将等于m.begin()。例如
if(ret.first == ret.second)
{
 // empty range
}
else
{
  //at least an element.
}