mirror of
https://github.com/Tencent/rapidjson.git
synced 2025-03-09 19:24:23 +01:00
Add Erase(ConstValueIterator) and Erase(ConstValueIterator,ConstValueIterator)
As std::vector::erase() overloads added in C++11
This commit is contained in:
parent
71c8402549
commit
9ab2621e85
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user