std :: set中的索引或位置

7 c++ stl

我有一个std :: set的std :: string.我需要集合中每个字符串的"索引"或"位置",这在上下文中是一个有意义的概念吗?

我猜find()将返回字符串的迭代器,所以我的问题可能更好地表达为:"我如何将迭代器转换为数字?".

lau*_*ura 15

std::distance是你需要的.我猜你会想要的std::distance(set.begin(), find_result)

  • 备注:`std :: distance`是O(n),因为`set`迭代器是`BidirectionalIterator`而不是`RandomAccessIterator的模型 (6认同)
  • std :: distance是O(N)有没有办法在O(log(n))中获得订单统计? (3认同)
  • 没有好办法。对于任何具有适当簿记结构的体面结构,都可以用O(logN)来计算距离,但是该距离不是标准所要求的,据我所知,没有STL库可以做到。您需要otfind或编写量身定制的结构。 (2认同)