diff options
author | vadim-xd <vadim-xd@yandex-team.com> | 2025-03-05 13:38:13 +0300 |
---|---|---|
committer | vadim-xd <vadim-xd@yandex-team.com> | 2025-03-05 13:56:24 +0300 |
commit | 51f0d168cd2bc8ee1021d398e14ac88dcf0a38ec (patch) | |
tree | 99ab696870ab128713d9e2c8adf07d1c9cc22261 /library/cpp/containers/compact_vector/compact_vector.h | |
parent | 9eed360f02de773a5ed2de5d2a3e81fc7f06acfa (diff) | |
download | ydb-51f0d168cd2bc8ee1021d398e14ac88dcf0a38ec.tar.gz |
Add new methods for TCompactVector
commit_hash:dc7ab41cade426d450efbc68b6cd72e045e3f69e
Diffstat (limited to 'library/cpp/containers/compact_vector/compact_vector.h')
-rw-r--r-- | library/cpp/containers/compact_vector/compact_vector.h | 24 |
1 files changed, 21 insertions, 3 deletions
diff --git a/library/cpp/containers/compact_vector/compact_vector.h b/library/cpp/containers/compact_vector/compact_vector.h index 984ec6ac00..cff5345ee2 100644 --- a/library/cpp/containers/compact_vector/compact_vector.h +++ b/library/cpp/containers/compact_vector/compact_vector.h @@ -113,6 +113,14 @@ public: return *this; } + bool operator==(const TCompactVector<T>& other) const { + return size() == other.size() && std::equal(begin(), end(), other.begin()); + } + + explicit operator bool() const { + return !empty(); + } + TIterator Begin() { return Ptr; } @@ -218,15 +226,25 @@ public: } void PushBack(const T& elem) { - Reserve(Size() + 1); - new (Ptr + Size()) T(elem); - ++(Header()->Size); + EmplaceBack(elem); } void push_back(const T& elem) { PushBack(elem); } + template <class... Args> + void EmplaceBack(Args&&... args) { + Reserve(Size() + 1); + new (Ptr + Size()) T(std::forward<Args>(args)...); + ++(Header()->Size); + } + + template <class... Args> + void emplace_back(Args&&... args) { + EmplaceBack(std::forward<Args>(args)...); + } + T& Back() { return *(End() - 1); } |