mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-01-31 12:41:49 +01:00
[ADT] Add a pop_back_val method to the SparseSet container.
The next commit will use it. llvm-svn: 263455
This commit is contained in:
parent
3b7d2db4ef
commit
573b41c165
@ -263,6 +263,11 @@ public:
|
||||
return *insert(ValueT(Key)).first;
|
||||
}
|
||||
|
||||
ValueT pop_back_val() {
|
||||
// Sparse does not need to be cleared, see find().
|
||||
return Dense.pop_back_val();
|
||||
}
|
||||
|
||||
/// erase - Erases an existing element identified by a valid iterator.
|
||||
///
|
||||
/// This invalidates all iterators, but erase() returns an iterator pointing
|
||||
|
@ -183,4 +183,24 @@ TEST(SparseSetTest, AltStructSet) {
|
||||
EXPECT_FALSE(Set.erase(5));
|
||||
EXPECT_TRUE(Set.erase(6));
|
||||
}
|
||||
|
||||
TEST(SparseSetTest, PopBack) {
|
||||
USet Set;
|
||||
const unsigned UpperBound = 300;
|
||||
Set.setUniverse(UpperBound);
|
||||
for (unsigned i = 0; i < UpperBound; ++i)
|
||||
Set.insert(i);
|
||||
|
||||
// Make sure pop back returns the values in the reverse order we
|
||||
// inserted them.
|
||||
unsigned Expected = UpperBound;
|
||||
while (!Set.empty())
|
||||
ASSERT_TRUE(--Expected == Set.pop_back_val());
|
||||
|
||||
// Insert again the same elements in the sparse set and make sure
|
||||
// each insertion actually inserts the elements. I.e., check
|
||||
// that the underlying data structure are properly cleared.
|
||||
for (unsigned i = 0; i < UpperBound; ++i)
|
||||
ASSERT_TRUE(Set.insert(i).second);
|
||||
}
|
||||
} // namespace
|
||||
|
Loading…
x
Reference in New Issue
Block a user