diff options
| author | Jun Bum Lim <junbuml@codeaurora.org> | 2016-03-25 19:28:08 +0000 |
|---|---|---|
| committer | Jun Bum Lim <junbuml@codeaurora.org> | 2016-03-25 19:28:08 +0000 |
| commit | 2544788e13b3c6f8651fea26ce204ecb2285dc83 (patch) | |
| tree | 0dac2625d6d091b91aa9c7e3ec812eba02e04e6c /llvm/unittests/ADT/SetVectorTest.cpp | |
| parent | 09ff326ca23ea631ba5707f17804eb70375196cc (diff) | |
| download | llvm-2544788e13b3c6f8651fea26ce204ecb2285dc83.zip llvm-2544788e13b3c6f8651fea26ce204ecb2285dc83.tar.gz llvm-2544788e13b3c6f8651fea26ce204ecb2285dc83.tar.bz2 | |
[SetVector] Add erase() method
This is a recommit of r264414 after fixing the buildbot failure caused by
incompatible use of std::vector.erase().
The original message:
Add erase() which returns an iterator pointing to the next element after the
erased one. This makes it possible to erase selected elements while iterating
over the SetVector :
while (I != E)
if (test(*I))
I = SetVector.erase(I);
else
++I;
Reviewers: qcolombet, mcrosier, MatzeB, dblaikie
Subscribers: dberlin, dblaikie, mcrosier, llvm-commits
Differential Revision: http://reviews.llvm.org/D18281
llvm-svn: 264450
Diffstat (limited to 'llvm/unittests/ADT/SetVectorTest.cpp')
| -rw-r--r-- | llvm/unittests/ADT/SetVectorTest.cpp | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/llvm/unittests/ADT/SetVectorTest.cpp b/llvm/unittests/ADT/SetVectorTest.cpp new file mode 100644 index 0000000..b8cac0d --- /dev/null +++ b/llvm/unittests/ADT/SetVectorTest.cpp @@ -0,0 +1,34 @@ +//===- llvm/unittest/ADT/SetVector.cpp ------------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// +// +// SetVector unit tests. +// +//===----------------------------------------------------------------------===// + +#include "llvm/ADT/SetVector.h" +#include "gtest/gtest.h" + +using namespace llvm; + +TEST(SetVector, EraseTest) { + SetVector<int> S; + S.insert(0); + S.insert(1); + S.insert(2); + + auto I = S.erase(std::next(S.begin())); + + // Test that the returned iterator is the expected one-after-erase + // and the size/contents is the expected sequence {0, 2}. + EXPECT_EQ(std::next(S.begin()), I); + EXPECT_EQ(2u, S.size()); + EXPECT_EQ(0, *S.begin()); + EXPECT_EQ(2, *std::next(S.begin())); +} + |
