假设我有一个多集A = {0,1,1,1,2}。如果执行以下操作:multiset lower_bound迭代器的位置
multiset<int>::iterator it = A.lower_bound(2)
它返回一个迭代器。我可以轻松打印它的价值。但是有什么方法可以知道它的位置吗?我的意思是它会返回4.
假设我有一个多集A = {0,1,1,1,2}。如果执行以下操作:multiset lower_bound迭代器的位置
multiset<int>::iterator it = A.lower_bound(2)
它返回一个迭代器。我可以轻松打印它的价值。但是有什么方法可以知道它的位置吗?我的意思是它会返回4.
#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);
}
他们是否有任何快速的选择? –
@伊扎兹阿布拉尔我不知道其他人 – Rabbid76
您可以使用['标准:: distance'(http://en.cppreference.com/w/cpp/iterator/distance)至从'A.begin()'得到一个偏移量。 –
我正在寻找一些快速的替代品。据我所知距离()的复杂度是O(n)。纠正我,如果我错了 –
是的,它是O(n)该类型的迭代器([双向迭代器](http://en.cppreference.com/w/cpp/concept/BidirectionalIterator)),并没有真的没有更快办法。 –