【问题标题】:Retrieve first key of std::multimap, c++检索std :: multimap的第一个键,c ++
【发布时间】:2021-11-19 10:28:09
【问题描述】:

我只想检索多图的第一个键。我已经通过迭代多图来实现它,获取第一个键然后中断。不过应该有更好的方法,但是我没找到。

int store_key;
std::multimap<int, int> example_map; // then something in it..
for (auto key : example_map)
{
    store_key = key;
    break;
}

这解决了问题,但我正在寻找另一种解决方案。

【问题讨论】:

  • example_map.begin()-&gt;first ?!?
  • 顺便说一句,当example_map 为空时,您需要考虑如何处理这种情况。
  • 您的store_key 不仅仅是关键,而是std::pair&lt;const Key, mapped_type&gt;
  • 顺便说一句,这是好的抽象的不好的一面,比如基于范围的 for 循环,很明显的事情被隐藏了。我建议你用一个普通的基于迭代器的循环来编写你的循环,你会注意到如何摆脱循环

标签: c++ multimap


【解决方案1】:

您的基于 for 循环的范围或多或少(不完全是,但对于这个答案来说已经足够好了)相当于:

for (auto it = example_map.begin(); it != example_map.end(); ++it) {
    auto key = *it;

    store_key = key;
    break;
}

我希望现在你可以摆脱循环,对于非空地图来说,它只是:

 auto store_key = *example_map.begin();

请注意,store_key 用词不当,因为它不仅仅是键,而且您的代码会触发编译器错误。这是一个std::pair&lt;const int,int&gt;store_key-&gt;first 是关键。

【讨论】:

  • 非常感谢您的回答和您的cmets非常有用!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-08
  • 2012-03-11
  • 2015-09-21
  • 1970-01-01
  • 1970-01-01
  • 2013-02-27
相关资源
最近更新 更多