summaryrefslogtreecommitdiffstats
path: root/vespalib
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2020-03-19 15:17:43 +0100
committerGitHub <noreply@github.com>2020-03-19 15:17:43 +0100
commitb54b22e44a661f84882f581c5f82d248c4d54104 (patch)
tree14dd5bc24bf6178d6450327e18ae455515df57ca /vespalib
parent13eb0fce976e4206ad9bfda75249ca309cc36e60 (diff)
parent0c3d8f089e46df6b6da9477991c79e4f4cc3502a (diff)
Merge pull request #12619 from vespa-engine/balder/optimize-value-excutors
Balder/optimize value excutors.
Diffstat (limited to 'vespalib')
-rw-r--r--vespalib/src/tests/stllike/hash_test.cpp3
-rw-r--r--vespalib/src/vespa/vespalib/stllike/hash_map.hpp7
-rw-r--r--vespalib/src/vespa/vespalib/stllike/hash_set.h1
3 files changed, 8 insertions, 3 deletions
diff --git a/vespalib/src/tests/stllike/hash_test.cpp b/vespalib/src/tests/stllike/hash_test.cpp
index 017a16ee7b6..b39b6859623 100644
--- a/vespalib/src/tests/stllike/hash_test.cpp
+++ b/vespalib/src/tests/stllike/hash_test.cpp
@@ -356,6 +356,9 @@ TEST("test hash set find")
EXPECT_TRUE(*set.find(S(1)) == S(1));
auto cit = set.find<uint32_t>(7);
EXPECT_TRUE(*cit == S(7));
+
+ EXPECT_EQUAL(1u, set.count(S(7)));
+ EXPECT_EQUAL(0u, set.count(S(10007)));
}
TEST("test hash set range constructor")
diff --git a/vespalib/src/vespa/vespalib/stllike/hash_map.hpp b/vespalib/src/vespa/vespalib/stllike/hash_map.hpp
index 08edcf3c837..61789f6e2be 100644
--- a/vespalib/src/vespa/vespalib/stllike/hash_map.hpp
+++ b/vespalib/src/vespa/vespalib/stllike/hash_map.hpp
@@ -73,11 +73,12 @@ hash_map<K, V, H, EQ, M>::getMemoryUsed() const
template vespalib::hashtable<K, std::pair<K,V>, H, E, vespalib::Select1st<std::pair<K,V>>, M>::insert_result \
vespalib::hashtable<K, std::pair<K,V>, H, E, vespalib::Select1st<std::pair<K,V>>, M>::insert(std::pair<K,V> &&); \
template vespalib::hashtable<K, std::pair<K,V>, H, E, vespalib::Select1st<std::pair<K,V>>, M>::insert_result \
- vespalib::hashtable<K, std::pair<K,V>, H, E, vespalib::Select1st<std::pair<K,V>>, M>::insertInternal(std::pair<K,V> &&); \
- template class vespalib::Array<vespalib::hash_node<std::pair<K,V>>>;
+ vespalib::hashtable<K, std::pair<K,V>, H, E, vespalib::Select1st<std::pair<K,V>>, M>::insertInternal(std::pair<K,V> &&);
#define VESPALIB_HASH_MAP_INSTANTIATE_H_E(K, V, H, E) \
- VESPALIB_HASH_MAP_INSTANTIATE_H_E_M(K, V, H, E, vespalib::hashtable_base::prime_modulator)
+ template class vespalib::Array<vespalib::hash_node<std::pair<K,V>>>; \
+ VESPALIB_HASH_MAP_INSTANTIATE_H_E_M(K, V, H, E, vespalib::hashtable_base::prime_modulator) \
+ VESPALIB_HASH_MAP_INSTANTIATE_H_E_M(K, V, H, E, vespalib::hashtable_base::and_modulator)
#define VESPALIB_HASH_MAP_INSTANTIATE_H(K, V, H) VESPALIB_HASH_MAP_INSTANTIATE_H_E(K, V, H, std::equal_to<>)
diff --git a/vespalib/src/vespa/vespalib/stllike/hash_set.h b/vespalib/src/vespa/vespalib/stllike/hash_set.h
index 8d315ebfd07..08288086bf3 100644
--- a/vespalib/src/vespa/vespalib/stllike/hash_set.h
+++ b/vespalib/src/vespa/vespalib/stllike/hash_set.h
@@ -42,6 +42,7 @@ public:
template<typename InputIt>
void insert(InputIt first, InputIt last);
void erase(const K & key);
+ size_t count(const K & key) const { return _ht.find(key) != end() ? 1 : 0; }
iterator find(const K & key) { return _ht.find(key); }
const_iterator find(const K & key) const { return _ht.find(key); }