在C ++中从地图获取第一价值


74

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

谢谢。

Answers:


114

地图将不会保持插入顺序。采用*(myMap.begin())得到第一对值(一个具有最小键排序时)。

您也可以这样做myMap.begin()->first以获取密钥并myMap.begin()->second获取价值。


1
myMap.begin()返回一个迭代器。您可能要检查stackoverflow.com/questions/388242/...
MSalters

12
不,它返回值。myMap.begin()是一个迭代器,它的*and->运算符重载为指针,而++and--运算符重载以迭代映射中的元素。您应该阅读有关STL的介绍。也许有人对您有很好的链接?
Benoit

如果我想要值而不是迭代器?
ADIR

2
@adir:在上一段中进行了解释。
jweyrich 2011年

@Benoit您是否知道地图中第一,第二的类型?谢谢
RaHuL

12

就像:

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

6

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


5

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

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

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


1
恰恰相反:它根据键的比较以有序的方式存储其内容!
奥利弗·查尔斯沃思

1
是的,各位,您绝对正确。它是按关键顺序排序的。我的意思是说,插入顺序不会保留,即映射的第一个添加条目不一定是begin()
MarcusGründler2011年

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.