From 1db90a140322d9fd92be9553a55cb22cab8a0ee1 Mon Sep 17 00:00:00 2001 From: Soren Lassen Date: Fri, 27 Sep 2013 12:23:06 -0700 Subject: [PATCH] Added initializer_list ctors to sorted_vector_{set,map} Test Plan: unittest Reviewed By: tudorb@fb.com FB internal diff: D987910 --- folly/sorted_vector_types.h | 23 +++++++++++++++++++++-- folly/test/sorted_vector_test.cpp | 30 ++++++++++++++++++++++++++++++ 2 files changed, 51 insertions(+), 2 deletions(-) diff --git a/folly/sorted_vector_types.h b/folly/sorted_vector_types.h index d5503849..03db4cdc 100644 --- a/folly/sorted_vector_types.h +++ b/folly/sorted_vector_types.h @@ -60,10 +60,11 @@ #ifndef FOLLY_SORTED_VECTOR_TYPES_H_ #define FOLLY_SORTED_VECTOR_TYPES_H_ -#include #include -#include +#include #include +#include +#include #include #include #include @@ -214,6 +215,15 @@ public: insert(first, last); } + explicit sorted_vector_set( + std::initializer_list list, + const Compare& comp = Compare(), + const Allocator& alloc = Allocator()) + : m_(comp, alloc) + { + insert(list.begin(), list.end()); + } + key_compare key_comp() const { return m_; } value_compare value_comp() const { return m_; } @@ -440,6 +450,15 @@ public: insert(first, last); } + explicit sorted_vector_map( + std::initializer_list list, + const Compare& comp = Compare(), + const Allocator& alloc = Allocator()) + : m_(value_compare(comp), alloc) + { + insert(list.begin(), list.end()); + } + key_compare key_comp() const { return m_; } value_compare value_comp() const { return m_; } diff --git a/folly/test/sorted_vector_test.cpp b/folly/test/sorted_vector_test.cpp index 2ad5fd8c..e78e0ab5 100644 --- a/folly/test/sorted_vector_test.cpp +++ b/folly/test/sorted_vector_test.cpp @@ -213,6 +213,36 @@ TEST(SortedVectorTypes, Sizes) { EXPECT_EQ(sizeof(MapT), sizeof(std::vector >)); } +TEST(SortedVectorTypes, InitializerLists) { + sorted_vector_set empty_initialized_set{}; + EXPECT_TRUE(empty_initialized_set.empty()); + + sorted_vector_set singleton_initialized_set{1}; + EXPECT_EQ(1, singleton_initialized_set.size()); + EXPECT_EQ(1, *singleton_initialized_set.begin()); + + sorted_vector_set forward_initialized_set{1, 2}; + sorted_vector_set backward_initialized_set{2, 1}; + EXPECT_EQ(2, forward_initialized_set.size()); + EXPECT_EQ(1, *forward_initialized_set.begin()); + EXPECT_EQ(2, *forward_initialized_set.rbegin()); + EXPECT_TRUE(forward_initialized_set == backward_initialized_set); + + sorted_vector_map empty_initialized_map{}; + EXPECT_TRUE(empty_initialized_map.empty()); + + sorted_vector_map singleton_initialized_map{{1,10}}; + EXPECT_EQ(1, singleton_initialized_map.size()); + EXPECT_EQ(10, singleton_initialized_map[1]); + + sorted_vector_map forward_initialized_map{{1,10}, {2,20}}; + sorted_vector_map backward_initialized_map{{2,20}, {1,10}}; + EXPECT_EQ(2, forward_initialized_map.size()); + EXPECT_EQ(10, forward_initialized_map[1]); + EXPECT_EQ(20, forward_initialized_map[2]); + EXPECT_TRUE(forward_initialized_map == backward_initialized_map); +} + TEST(SortedVectorTypes, CustomCompare) { sorted_vector_set > s; for (int i = 0; i < 200; ++i) -- 2.34.1