c++ - 多重集 lower_bound 迭代器的位置

标签 c++ stl iterator multiset

假设,我有一个多重集 A = {0, 1, 1, 1, 2}。如果执行以下操作:

multiset<int>::iterator it = A.lower_bound(2)

它返回一个迭代器。我可以轻松打印它的值。但有没有办法知道它的位置呢?我的意思是它将返回 4。

最佳答案

使用std::distance

#include <iterator>
#include <set>

int main() 
{
    multiset<int> A = { 0, 1, 1, 1, 2 };
    multiset<int>::iterator it = A.lower_bound( 2 );
    size_t dist = distance( A.begin(), it );
}

关于c++ - 多重集 lower_bound 迭代器的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34237612/

相关文章:

c++ - std::list remove_if 删除节点?

c++ - std::erase 如何为 vector 实现?

c++ - 如何创建尾后迭代器?

c# - 为什么必须实现 IEnumerator<T> GetEnumerator() 和 GetEnumerator()?

c++ - 使用 pragma pack 时 wcslen() 返回不正确的结果

c++ - 找出 AxB 的网格中有多少圈

c++ - 不同类访问的数据的单一拷贝

c++ - STL 中是否有进行字符串转换但带有长度参数的函数?

c++ - 如何区分这两个插入函数

c++ - 如何在 C++ 中重置结构体中的所有变量?