Commit 9ab2621e authored by miloyip's avatar miloyip

Add Erase(ConstValueIterator) and Erase(ConstValueIterator,ConstValueIterator)

As std::vector::erase() overloads added in C++11
parent 71c84025
...@@ -1008,6 +1008,10 @@ int z = a[0u].GetInt(); // This works too. ...@@ -1008,6 +1008,10 @@ int z = a[0u].GetInt(); // This works too.
return Erase(pos, pos + 1); return Erase(pos, pos + 1);
} }
ValueIterator Erase(ConstValueIterator pos) {
return Erase(const_cast<ValueIterator>(pos));
}
//! Remove elements in the range [first, last) of the array. //! Remove elements in the range [first, last) of the array.
/*! /*!
\param pos iterator to the element to remove \param pos iterator to the element to remove
...@@ -1029,6 +1033,10 @@ int z = a[0u].GetInt(); // This works too. ...@@ -1029,6 +1033,10 @@ int z = a[0u].GetInt(); // This works too.
return first; return first;
} }
ValueIterator Erase(ConstValueIterator first, ConstValueIterator last) {
return Erase(const_cast<ValueIterator>(first), const_cast<ValueIterator>(last));
}
//@} //@}
//!@name Number //!@name Number
......
...@@ -628,11 +628,11 @@ TEST(Value, Array) { ...@@ -628,11 +628,11 @@ TEST(Value, Array) {
x.PushBack(Value(kArrayType).PushBack(i, allocator).Move(), allocator); x.PushBack(Value(kArrayType).PushBack(i, allocator).Move(), allocator);
// Erase the first // Erase the first
itr = x.Erase(x.Begin()); itr = x.Erase(y.Begin()); // const iteator is also OK
EXPECT_EQ(x.Begin(), itr); EXPECT_EQ(y.Begin(), itr);
EXPECT_EQ(9u, x.Size()); EXPECT_EQ(9u, y.Size());
for (int i = 0; i < 9; i++) for (int i = 0; i < 9; i++)
EXPECT_EQ(i + 1, x[i][0u].GetInt()); EXPECT_EQ(i + 1, y[i][0u].GetInt());
// Ease the last // Ease the last
itr = x.Erase(x.End() - 1); itr = x.Erase(x.End() - 1);
...@@ -659,7 +659,7 @@ TEST(Value, Array) { ...@@ -659,7 +659,7 @@ TEST(Value, Array) {
for (unsigned i = 0; i < n; i++) for (unsigned i = 0; i < n; i++)
x.PushBack(Value(kArrayType).PushBack(i, allocator).Move(), allocator); x.PushBack(Value(kArrayType).PushBack(i, allocator).Move(), allocator);
itr = x.Erase(x.Begin() + first, x.Begin() + last); itr = x.Erase(y.Begin() + first, y.Begin() + last); // const iterator is also OK
if (last == n) if (last == n)
EXPECT_EQ(x.End(), itr); EXPECT_EQ(x.End(), itr);
else else
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment