【问题标题】:C++ std::map: get the key at a specific offset [duplicate]C ++ std :: map:获取特定偏移量的密钥[重复]
【发布时间】:2018-04-11 00:54:15
【问题描述】:

如果我的地图的键是动态生成的,有没有办法在特定的偏移量处获取一个键值,比如第二个键值对的键值?我试图获取地图的随机键值,所以我只是生成了一个随机数并想用这个偏移量提取相应的键。我不知道这是否是实现这一目标的方法。或者有没有正常的方法?谢谢!

【问题讨论】:

  • 听起来像XY问题,如果通过偏移访问为什么需要地图?
  • 不知道有没有其他方法可以获取随机键值,可能不通过offset访问?但我认为我必须在我的情况下使用地图。
  • 地图是按键排序的,所以当你添加更多项目时,事物的偏移量会发生变化。这可能是您的错误容器。如果您需要简单的随机访问,成对或结构的向量可能会更有用。

标签: c++ stdmap


【解决方案1】:

您可以使用std::next

std::map<int, int> myMap;
auto itAtOffset = std::next(myMap.begin(), offset);

如果您没有 C++ 11,则可以改用 std::advance

std::map<int, int> myMap;
std::map<int, int>::iterator itAtOffset = myMap.begin();
std::advance(itAtOffset, offset);

注意复杂度是O(N),所以如果你想要更快的方法,你应该考虑将数据存储在不同的结构中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-21
    • 1970-01-01
    • 2015-01-03
    • 1970-01-01
    • 1970-01-01
    • 2017-07-18
    相关资源
    最近更新 更多