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); }
|
||||
reverse_iterator& operator-=(difference_type n)
|
||||
{ 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
|
||||
{ return *(*this + n); }
|
||||
@@ -215,6 +217,8 @@ public:
|
||||
{ return const_reverse_iterator(m_ptr + n); }
|
||||
const_reverse_iterator& operator-=(difference_type n)
|
||||
{ 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
|
||||
{ return *(*this + n); }
|
||||
|
@@ -331,3 +331,23 @@ TEST_CASE("wxVector::operator==", "[vector][compare]")
|
||||
v2.push_back("baz");
|
||||
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