C++ 在添加到std::map时获取迭代器?

C++ 在添加到std::map时获取迭代器?,c++,map,stl,C++,Map,Stl,在使用标准库映射容器时,是否有任何不需要在整个容器中搜索的方法来获取迭代器 我有一个映射的管理类,我希望返回与添加到映射中的项相关联的迭代器。如果可能的话,我不想依赖find()。如果我能避免搜索,我会觉得更好 std::map<char, bool>::iterator ClassA::Add(char item) { mymap[item] = false; return mymap.get_iterator_lastitem(); } 如果您没有使用C++11,那么

在使用标准库映射容器时,是否有任何不需要在整个容器中搜索的方法来获取迭代器

我有一个映射的管理类,我希望返回与添加到映射中的项相关联的迭代器。如果可能的话,我不想依赖find()。如果我能避免搜索,我会觉得更好

std::map<char, bool>::iterator ClassA::Add(char item)
{
  mymap[item] = false;
  return mymap.get_iterator_lastitem();
}

如果您没有使用C++11,那么

std::map<char, bool>::iterator ClassA::Add(char item)
{
   std::pair<std::map<char, bool>::iterator, bool> result = mymap.insert(std::make_pair(item, false));
   if(!result.second) {
       // Item already exists, modify that existing item
       result.first->second = false;
   }

   return result.first;
}


insert
emplace
都返回一对迭代器和一个布尔值,迭代器指向插入的或现有的元素,布尔值指示插入(
true
)是否发生(
false
)其中返回的迭代器用键指向已经存在的元素。

大多数容器都有一个
insert
方法,该方法返回一个迭代器,
map
is(尽管它将迭代器作为一对返回)。请参阅。此外,当对
std::map
进行排序时,使用索引操作(如
mymap[key]=data
)添加一个新项目,新项目可能不是地图中的“最后”项目。第一个将此作为答案发布的人将获得分数。谢谢你。
std::map<char, bool>::iterator ClassA::Add(char item)
{
   std::pair<std::map<char, bool>::iterator, bool> result = mymap.insert(std::make_pair(item, false));
   if(!result.second) {
       // Item already exists, modify that existing item
       result.first->second = false;
   }

   return result.first;
}
std::map<char, bool>::iterator ClassA::Add(char item)
{
   auto result = mymap.emplace(item, false);
   if(!result.second) {
      // Item already exists, modify that existing item
      result.first->second = false;
   }

   return result.first;
}