sashoalm
sashoalm

Reputation: 79685

Convert QList iterator to index

I use qLowerBound to find an item in a QList, but this function returns an iterator, while I need an index (I'll pass it to another function that expects an index). Is there a way to get the index from the QList iterator?

Upvotes: 8

Views: 7407

Answers (2)

Noam SILVY
Noam SILVY

Reputation: 23

As pointed out by @Frank Osterfeld's comment, you can use this:

const auto index = std::distance(yourList.begin(), currentIteratorOnYourList);

Checkout this article from Fluent{C++} blog.

Upvotes: 2

Ilya Kobelevskiy
Ilya Kobelevskiy

Reputation: 5345

You can subtract iterator to beginning of your list from your iterator to get an index, since pointer arithmetic is defined on iterators:

int idx = iter-yourList.begin();

See QList-iterator-reference

Upvotes: 13

Related Questions