【问题标题】:Getting first value from map in C++在 C++ 中从 map 中获取第一个值
【发布时间】:2011-06-17 02:51:08
【问题描述】:

我在 C++ 中使用map。假设我在 map 中有 10 个值,而我只想要第一个。如何获得?

谢谢。

【问题讨论】:

    标签: c++ map


    【解决方案1】:

    begin() 返回第一对,(准确地说,是第一对的迭代器,您可以访问该迭代器的 ->first->second 的键/值)

    【讨论】:

      【解决方案2】:

      地图不会保持插入顺序。使用*(myMap.begin()) 获取第一对的值(排序时键最小的那个)。

      您也可以使用myMap.begin()->first 获取密钥,使用myMap.begin()->second 获取值。

      【讨论】:

      • myMap.begin() 返回一个迭代器。你可能想检查stackoverflow.com/questions/388242/…
      • 不,它返回值。 myMap.begin() 是一个迭代器,它重载了 *-> 运算符以表现得像一个指针,并且重载了 ++-- 运算符以迭代地图中的元素。您应该阅读有关 STL 的介绍。也许有人为您提供了一个很好的链接?
      • 如果我想要值而不是迭代器?
      • @adir:在最后一段中已经解释过了。
      • @Benoit 你知道地图中第一、第二的类型吗?谢谢
      【解决方案3】:

      *my_map.begin()。参见例如http://cplusplus.com/reference/stl/map/begin/.

      【讨论】:

        【解决方案4】:

        就这么简单:

        your_map.begin()->first // key
        your_map.begin()->second // value
        

        【讨论】:

          【解决方案5】:

          您可以使用地图模板的 begin() 方法返回的迭代器:

          std::map<K,V> myMap;
          std::pair<K,V> firstEntry = *myMap.begin()
          

          但请记住,std::map 容器以有序的方式存储其内容。所以第一个条目并不总是第一个被添加的条目。

          【讨论】:

          • 恰恰相反:它根据键的比较以有序的方式存储其内容!
          • 是的,伙计们,你是绝对正确的。它是按键顺序排列的。我的意思是,不保留插入顺序,即第一个添加到地图的条目不一定是 begin() 处的条目。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-10-02
          • 1970-01-01
          • 2020-02-11
          • 1970-01-01
          • 2019-03-09
          相关资源
          最近更新 更多