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.
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.
/*!
\param pos iterator to the element to remove
......@@ -1029,6 +1033,10 @@ int z = a[0u].GetInt(); // This works too.
return first;
}
ValueIterator Erase(ConstValueIterator first, ConstValueIterator last) {
return Erase(const_cast<ValueIterator>(first), const_cast<ValueIterator>(last));
}
//@}
//!@name Number
......
......@@ -628,11 +628,11 @@ TEST(Value, Array) {
x.PushBack(Value(kArrayType).PushBack(i, allocator).Move(), allocator);
// Erase the first
itr = x.Erase(x.Begin());
EXPECT_EQ(x.Begin(), itr);
EXPECT_EQ(9u, x.Size());
itr = x.Erase(y.Begin()); // const iteator is also OK
EXPECT_EQ(y.Begin(), itr);
EXPECT_EQ(9u, y.Size());
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
itr = x.Erase(x.End() - 1);
......@@ -659,7 +659,7 @@ TEST(Value, Array) {
for (unsigned i = 0; i < n; i++)
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)
EXPECT_EQ(x.End(), itr);
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