diff options
| author | tobo <[email protected]> | 2026-05-15 17:52:53 +0300 |
|---|---|---|
| committer | tobo <[email protected]> | 2026-05-15 18:33:30 +0300 |
| commit | 3a786a661247268bf50c55d997cfa2aa05a8e4d2 (patch) | |
| tree | 6c0f1df0011dcb70997796f3b78c85c9af4fc7cf /library/cpp/containers | |
| parent | 17c23a462978eb3f2a10a11371e7ac0c7045ae0f (diff) | |
add assign() method + tests for TCompactVector
add assign() method for better compatibility with std::vector
commit_hash:7a216f3a025414493f3e6dc676b5c203208e462b
Diffstat (limited to 'library/cpp/containers')
| -rw-r--r-- | library/cpp/containers/compact_vector/compact_vector.h | 8 | ||||
| -rw-r--r-- | library/cpp/containers/compact_vector/compact_vector_ut.cpp | 34 |
2 files changed, 42 insertions, 0 deletions
diff --git a/library/cpp/containers/compact_vector/compact_vector.h b/library/cpp/containers/compact_vector/compact_vector.h index f795b40eb41..580d7823815 100644 --- a/library/cpp/containers/compact_vector/compact_vector.h +++ b/library/cpp/containers/compact_vector/compact_vector.h @@ -314,6 +314,14 @@ public: Clear(); } + void assign(size_t count, const T& value) { + Clear(); + Reserve(count); + for (size_t i = 0; i < count; ++i) { + PushBack(value); + } + } + void erase(iterator position) { Y_ENSURE(position >= begin() && position < end()); std::move(position + 1, end(), position); diff --git a/library/cpp/containers/compact_vector/compact_vector_ut.cpp b/library/cpp/containers/compact_vector/compact_vector_ut.cpp index f9fd43d0c79..593e61c3687 100644 --- a/library/cpp/containers/compact_vector/compact_vector_ut.cpp +++ b/library/cpp/containers/compact_vector/compact_vector_ut.cpp @@ -210,4 +210,38 @@ Y_UNIT_TEST_SUITE(TCompactVectorTest) { UNIT_ASSERT_VALUES_EQUAL(ptr1, vector[0].data()); UNIT_ASSERT_VALUES_EQUAL(ptr2, vector[1].data()); } + + Y_UNIT_TEST(TestAssignWithCount) { + TCompactVector<ui32> vector = {1, 2, 3, 4, 5}; + UNIT_ASSERT_VALUES_EQUAL(5u, vector.Size()); + + vector.assign(3, 42); + UNIT_ASSERT_VALUES_EQUAL(3u, vector.Size()); + + UNIT_ASSERT_VALUES_EQUAL(42u, vector[0]); + UNIT_ASSERT_VALUES_EQUAL(42u, vector[1]); + UNIT_ASSERT_VALUES_EQUAL(42u, vector[2]); + } + + Y_UNIT_TEST(TestAssignWithZeroCount) { + TCompactVector<ui32> vector = {1, 2, 3, 4, 5}; + UNIT_ASSERT_VALUES_EQUAL(5u, vector.Size()); + + vector.assign(0, 42); + UNIT_ASSERT_VALUES_EQUAL(0u, vector.Size()); + UNIT_ASSERT(vector.empty()); + } + + Y_UNIT_TEST(TestAssignWithString) { + TCompactVector<std::string> vector = {"hello", "world"}; + UNIT_ASSERT_VALUES_EQUAL(2u, vector.Size()); + + vector.assign(4, "test"); + UNIT_ASSERT_VALUES_EQUAL(4u, vector.Size()); + + UNIT_ASSERT_VALUES_EQUAL("test", vector[0]); + UNIT_ASSERT_VALUES_EQUAL("test", vector[1]); + UNIT_ASSERT_VALUES_EQUAL("test", vector[2]); + UNIT_ASSERT_VALUES_EQUAL("test", vector[3]); + } } // Y_UNIT_TEST_SUITE(TCompactVectorTest) |
