From 32654ab1ec88206aeb4bd0366b165711e6a32948 Mon Sep 17 00:00:00 2001 From: Louis Kruger Date: Tue, 13 Jan 2015 12:03:43 -0800 Subject: [PATCH] Add folly::sorted_vector_map::at() Summary: http://www.cplusplus.com/reference/map/map/at/ Test Plan: unittest Reviewed By: ldbrandy@fb.com Subscribers: trunkagent, jkong, folly-diffs@ FB internal diff: D1773996 Signature: t1:1773996:1421176834:33c8b39f03bf085ca2dd45df113cba948d0f2dd0 --- folly/sorted_vector_types.h | 16 ++++++++++++++++ folly/test/sorted_vector_test.cpp | 3 +++ 2 files changed, 19 insertions(+) diff --git a/folly/sorted_vector_types.h b/folly/sorted_vector_types.h index e59ef9b3..b9b86a8c 100644 --- a/folly/sorted_vector_types.h +++ b/folly/sorted_vector_types.h @@ -552,6 +552,22 @@ public: return end(); } + mapped_type& at(const key_type& key) { + iterator it = find(key); + if (it != end()) { + return it->second; + } + throw std::out_of_range("sorted_vector_map::at"); + } + + const mapped_type& at(const key_type& key) const { + const_iterator it = find(key); + if (it != end()) { + return it->second; + } + throw std::out_of_range("sorted_vector_map::at"); + } + size_type count(const key_type& key) const { return find(key) == end() ? 0 : 1; } diff --git a/folly/test/sorted_vector_test.cpp b/folly/test/sorted_vector_test.cpp index 2b75a520..d3810a2a 100644 --- a/folly/test/sorted_vector_test.cpp +++ b/folly/test/sorted_vector_test.cpp @@ -149,10 +149,12 @@ TEST(SortedVectorTypes, SimpleMapTest) { m[32] = 100.0; check_invariant(m); EXPECT_TRUE(m.count(32) == 1); + EXPECT_DOUBLE_EQ(100.0, m.at(32)); EXPECT_FALSE(m.find(32) == m.end()); m.erase(32); EXPECT_TRUE(m.find(32) == m.end()); check_invariant(m); + EXPECT_THROW(m.at(32), std::out_of_range); sorted_vector_map m2 = m; EXPECT_TRUE(m2 == m); @@ -300,6 +302,7 @@ TEST(SortedVectorTest, EmptyTest) { sorted_vector_map emptyMap; EXPECT_TRUE(emptyMap.lower_bound(10) == emptyMap.end()); EXPECT_TRUE(emptyMap.find(10) == emptyMap.end()); + EXPECT_THROW(emptyMap.at(10), std::out_of_range); } TEST(SortedVectorTest, MoveTest) { -- 2.34.1