Minor improvements.

This commit is contained in:
levlam 2022-07-23 14:53:32 +03:00
parent 206becbb9f
commit d55869eedb
3 changed files with 10 additions and 8 deletions

View File

@ -469,7 +469,8 @@ class FlatHashTableChunks {
struct ChunkIt { struct ChunkIt {
size_t chunk_i; size_t chunk_i;
size_t chunk_mask; size_t chunk_mask;
size_t shift{}; size_t shift;
size_t pos() const { size_t pos() const {
return chunk_i; return chunk_i;
} }
@ -482,7 +483,7 @@ class FlatHashTableChunks {
}; };
ChunkIt get_chunk_it(size_t chunk_i) { ChunkIt get_chunk_it(size_t chunk_i) {
return {chunk_i, chunks_.size() - 1}; return ChunkIt{chunk_i, chunks_.size() - 1, 0};
} }
HashInfo calc_hash(const KeyT &key) { HashInfo calc_hash(const KeyT &key) {

View File

@ -54,7 +54,7 @@ struct MapNode {
DCHECK(empty()); DCHECK(empty());
DCHECK(!other.empty()); DCHECK(!other.empty());
first = std::move(other.first); first = std::move(other.first);
other.first = KeyT{}; other.first = KeyT();
new (&second) ValueT(std::move(other.second)); new (&second) ValueT(std::move(other.second));
other.second.~ValueT(); other.second.~ValueT();
} }

View File

@ -20,7 +20,7 @@ struct SetNode {
using public_type = const KeyT; using public_type = const KeyT;
using second_type = KeyT; // TODO: remove second_type? using second_type = KeyT; // TODO: remove second_type?
KeyT first{}; KeyT first;
const KeyT &key() const { const KeyT &key() const {
return first; return first;
@ -30,7 +30,8 @@ struct SetNode {
return first; return first;
} }
SetNode() = default; SetNode(): first() {
}
explicit SetNode(KeyT key) : first(std::move(key)) { explicit SetNode(KeyT key) : first(std::move(key)) {
} }
SetNode(const SetNode &other) = delete; SetNode(const SetNode &other) = delete;
@ -42,7 +43,7 @@ struct SetNode {
DCHECK(empty()); DCHECK(empty());
DCHECK(!other.empty()); DCHECK(!other.empty());
first = std::move(other.first); first = std::move(other.first);
other.first = KeyT{}; other.first = KeyT();
} }
~SetNode() = default; ~SetNode() = default;
@ -71,7 +72,7 @@ struct SetNode<KeyT, typename std::enable_if_t<(sizeof(KeyT) > 28 * sizeof(void
struct Impl { struct Impl {
using second_type = KeyT; using second_type = KeyT;
KeyT first{}; KeyT first;
template <class InputKeyT> template <class InputKeyT>
explicit Impl(InputKeyT &&key) : first(std::forward<InputKeyT>(key)) { explicit Impl(InputKeyT &&key) : first(std::forward<InputKeyT>(key)) {
@ -99,7 +100,7 @@ struct SetNode<KeyT, typename std::enable_if_t<(sizeof(KeyT) > 28 * sizeof(void
return impl_->first; return impl_->first;
} }
SetNode() { SetNode(): impl_() {
} }
explicit SetNode(KeyT key) : impl_(td::make_unique<Impl>(std::move(key))) { explicit SetNode(KeyT key) : impl_(td::make_unique<Impl>(std::move(key))) {
} }