aboutsummaryrefslogtreecommitdiffstats
path: root/library/cpp/containers/compact_vector/compact_vector.h
diff options
context:
space:
mode:
authorvadim-xd <vadim-xd@yandex-team.com>2025-03-05 13:38:13 +0300
committervadim-xd <vadim-xd@yandex-team.com>2025-03-05 13:56:24 +0300
commit51f0d168cd2bc8ee1021d398e14ac88dcf0a38ec (patch)
tree99ab696870ab128713d9e2c8adf07d1c9cc22261 /library/cpp/containers/compact_vector/compact_vector.h
parent9eed360f02de773a5ed2de5d2a3e81fc7f06acfa (diff)
downloadydb-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.h24
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);
}