forked from qt-creator/qt-creator
Utils: Make Utils::indexOf work with all iterator types
Change-Id: I5b9b577bdfb26bd03583ca8349b960625124a929 Reviewed-by: Eike Ziller <eike.ziller@qt.io>
This commit is contained in:
@@ -161,18 +161,6 @@ typename T::element_type *findOr(const C<T, AllocC> &container, typename T::elem
|
||||
return findOr(container, other, std::mem_fn(function));
|
||||
}
|
||||
|
||||
template<typename T, typename F>
|
||||
int indexOf(const T &container, F function)
|
||||
{
|
||||
typename T::const_iterator begin = std::begin(container);
|
||||
typename T::const_iterator end = std::end(container);
|
||||
|
||||
typename T::const_iterator it = std::find_if(begin, end, function);
|
||||
if (it == end)
|
||||
return -1;
|
||||
return it - begin;
|
||||
}
|
||||
|
||||
template<typename T, typename F>
|
||||
typename T::value_type findOrDefault(const T &container, F function)
|
||||
{
|
||||
@@ -202,6 +190,22 @@ typename T::element_type *findOrDefault(const C<T, AllocC> &container, R (S::*fu
|
||||
}
|
||||
|
||||
|
||||
//////////////////
|
||||
// index of:
|
||||
//////////////////
|
||||
|
||||
template<typename C, typename F>
|
||||
Q_REQUIRED_RESULT
|
||||
int indexOf(const C& container, F function)
|
||||
{
|
||||
typename C::const_iterator begin = std::begin(container);
|
||||
typename C::const_iterator end = std::end(container);
|
||||
|
||||
typename C::const_iterator it = std::find_if(begin, end, function);
|
||||
return it == end ? -1 : std::distance(begin, it);
|
||||
}
|
||||
|
||||
|
||||
//////////////////
|
||||
// max element
|
||||
//////////////////
|
||||
|
||||
Reference in New Issue
Block a user