STL compatibility: erase() should take a const_iterator as argument
erase() takes a const_iterator as argument in std::vector. We should do the same to facility better interoperatbility. Fixes: QTBUG-81915 Change-Id: I60ffb0eb45955be8e3e6aeaa56998f7c668fed09 Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
This commit is contained in:
parent
9f041c4f3b
commit
c946b07d9c
@ -371,8 +371,8 @@ public:
|
|||||||
const_reverse_iterator crbegin() const noexcept { return const_reverse_iterator(end()); }
|
const_reverse_iterator crbegin() const noexcept { return const_reverse_iterator(end()); }
|
||||||
const_reverse_iterator crend() const noexcept { return const_reverse_iterator(begin()); }
|
const_reverse_iterator crend() const noexcept { return const_reverse_iterator(begin()); }
|
||||||
|
|
||||||
iterator erase(iterator begin, iterator end);
|
iterator erase(const_iterator begin, const_iterator end);
|
||||||
inline iterator erase(iterator pos) { return erase(pos, pos+1); }
|
inline iterator erase(const_iterator pos) { return erase(pos, pos+1); }
|
||||||
|
|
||||||
// more Qt
|
// more Qt
|
||||||
inline T& first() { Q_ASSERT(!isEmpty()); return *begin(); }
|
inline T& first() { Q_ASSERT(!isEmpty()); return *begin(); }
|
||||||
@ -626,14 +626,13 @@ QVector<T>::emplace(int i, Args&&... args)
|
|||||||
}
|
}
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
typename QVector<T>::iterator QVector<T>::erase(iterator abegin, iterator aend)
|
typename QVector<T>::iterator QVector<T>::erase(const_iterator abegin, const_iterator aend)
|
||||||
{
|
{
|
||||||
Q_ASSERT_X(isValidIterator(const_iterator(abegin)), "QVector::erase", "The specified iterator argument 'abegin' is invalid");
|
Q_ASSERT_X(isValidIterator(abegin), "QVector::erase", "The specified iterator argument 'abegin' is invalid");
|
||||||
Q_ASSERT_X(isValidIterator(const_iterator(aend)), "QVector::erase", "The specified iterator argument 'aend' is invalid");
|
Q_ASSERT_X(isValidIterator(aend), "QVector::erase", "The specified iterator argument 'aend' is invalid");
|
||||||
Q_ASSERT(aend >= abegin);
|
Q_ASSERT(aend >= abegin);
|
||||||
|
|
||||||
// d.begin() so we don't detach just yet
|
int i = std::distance(d.constBegin(), abegin);
|
||||||
int i = std::distance(d.begin(), abegin);
|
|
||||||
int n = std::distance(abegin, aend);
|
int n = std::distance(abegin, aend);
|
||||||
remove(i, n);
|
remove(i, n);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user