Implement wxVector::reverse_iterator::operator-()
Make wxVector reverse iterators (and const versions of them) more compatible with the std::vector ones.
This commit is contained in:
@@ -170,6 +170,8 @@ public:
|
|||||||
{ return reverse_iterator(m_ptr + n); }
|
{ return reverse_iterator(m_ptr + n); }
|
||||||
reverse_iterator& operator-=(difference_type n)
|
reverse_iterator& operator-=(difference_type n)
|
||||||
{ m_ptr += n; return *this; }
|
{ m_ptr += n; return *this; }
|
||||||
|
difference_type operator-(const reverse_iterator& it) const
|
||||||
|
{ return it.m_ptr - m_ptr; }
|
||||||
|
|
||||||
reference operator[](difference_type n) const
|
reference operator[](difference_type n) const
|
||||||
{ return *(*this + n); }
|
{ return *(*this + n); }
|
||||||
@@ -215,6 +217,8 @@ public:
|
|||||||
{ return const_reverse_iterator(m_ptr + n); }
|
{ return const_reverse_iterator(m_ptr + n); }
|
||||||
const_reverse_iterator& operator-=(difference_type n)
|
const_reverse_iterator& operator-=(difference_type n)
|
||||||
{ m_ptr += n; return *this; }
|
{ m_ptr += n; return *this; }
|
||||||
|
difference_type operator-(const const_reverse_iterator& it) const
|
||||||
|
{ return it.m_ptr - m_ptr; }
|
||||||
|
|
||||||
const_reference operator[](difference_type n) const
|
const_reference operator[](difference_type n) const
|
||||||
{ return *(*this + n); }
|
{ return *(*this + n); }
|
||||||
|
@@ -331,3 +331,23 @@ TEST_CASE("wxVector::operator==", "[vector][compare]")
|
|||||||
v2.push_back("baz");
|
v2.push_back("baz");
|
||||||
CHECK( v1 != v2 );
|
CHECK( v1 != v2 );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST_CASE("wxVector::reverse_iterator", "[vector][reverse_iterator]")
|
||||||
|
{
|
||||||
|
wxVector<int> v;
|
||||||
|
for ( int i = 0; i < 10; ++i )
|
||||||
|
v.push_back(i + 1);
|
||||||
|
|
||||||
|
const wxVector<int>::reverse_iterator rb = v.rbegin();
|
||||||
|
const wxVector<int>::reverse_iterator re = v.rend();
|
||||||
|
CHECK( re - rb == 10 );
|
||||||
|
|
||||||
|
wxVector<int>::reverse_iterator ri = rb;
|
||||||
|
++ri;
|
||||||
|
CHECK( ri - rb == 1 );
|
||||||
|
CHECK( re - ri == 9 );
|
||||||
|
|
||||||
|
ri = rb + 2;
|
||||||
|
CHECK( ri - rb == 2 );
|
||||||
|
CHECK( re - ri == 8 );
|
||||||
|
}
|
||||||
|
Reference in New Issue
Block a user