@ -18,7 +18,7 @@
//
//
// An `absl::node_hash_set<T>` is an unordered associative container designed to
// An `absl::node_hash_set<T>` is an unordered associative container designed to
// be a more efficient replacement for `std::unordered_set`. Like
// be a more efficient replacement for `std::unordered_set`. Like
// `unordered_set`, search, insertion, and deletion of map elements can be done
// `unordered_set`, search, insertion, and deletion of set elements can be done
// as an `O(1)` operation. However, `node_hash_set` (and other unordered
// as an `O(1)` operation. However, `node_hash_set` (and other unordered
// associative containers known as the collection of Abseil "Swiss tables")
// associative containers known as the collection of Abseil "Swiss tables")
// contain other optimizations that result in both memory and computation
// contain other optimizations that result in both memory and computation
@ -60,7 +60,7 @@ struct NodeHashSetPolicy;
// following notable differences:
// following notable differences:
//
//
// * Supports heterogeneous lookup, through `find()`, `operator[]()` and
// * Supports heterogeneous lookup, through `find()`, `operator[]()` and
// `insert()`, provided that the map is provided a compatible heterogeneous
// `insert()`, provided that the set is provided a compatible heterogeneous
// hashing function and equality operator.
// hashing function and equality operator.
// * Contains a `capacity()` member function indicating the number of element
// * Contains a `capacity()` member function indicating the number of element
// slots (open, deleted, and empty) within the hash set.
// slots (open, deleted, and empty) within the hash set.
@ -76,13 +76,13 @@ struct NodeHashSetPolicy;
// Example:
// Example:
//
//
// // Create a node hash set of three strings
// // Create a node hash set of three strings
// absl::node_hash_map<std::string, std::string> ducks =
// absl::node_hash_set< std::string> ducks =
// {"huey", "dewey", "louie"};
// {"huey", "dewey", "louie"};
//
//
// // Insert a new element into the node hash map
// // Insert a new element into the node hash set
// ducks.insert("donald"} ;
// ducks.insert("donald") ;
//
//
// // Force a rehash of the node hash map
// // Force a rehash of the node hash set
// ducks.rehash(0);
// ducks.rehash(0);
//
//
// // See if "dewey" is present
// // See if "dewey" is present
@ -100,7 +100,7 @@ class node_hash_set
public :
public :
// Constructors and Assignment Operators
// Constructors and Assignment Operators
//
//
// A node_hash_set supports the same overload set as `std::unordered_map `
// A node_hash_set supports the same overload set as `std::unordered_set `
// for construction and assignment:
// for construction and assignment:
//
//
// * Default constructor
// * Default constructor
@ -167,7 +167,7 @@ class node_hash_set
// available within the `node_hash_set`.
// available within the `node_hash_set`.
//
//
// NOTE: this member function is particular to `absl::node_hash_set` and is
// NOTE: this member function is particular to `absl::node_hash_set` and is
// not provided in the `std::unordered_map ` API.
// not provided in the `std::unordered_set ` API.
using Base : : capacity ;
using Base : : capacity ;
// node_hash_set::empty()
// node_hash_set::empty()
@ -208,7 +208,7 @@ class node_hash_set
// `void`.
// `void`.
//
//
// NOTE: this return behavior is different than that of STL containers in
// NOTE: this return behavior is different than that of STL containers in
// general and `std::unordered_map ` in particular.
// general and `std::unordered_set ` in particular.
//
//
// iterator erase(const_iterator first, const_iterator last):
// iterator erase(const_iterator first, const_iterator last):
//
//
@ -314,7 +314,7 @@ class node_hash_set
// node_hash_set::merge()
// node_hash_set::merge()
//
//
// Extracts elements from a given `source` flat hash map into this
// Extracts elements from a given `source` node hash set into this
// `node_hash_set`. If the destination `node_hash_set` already contains an
// `node_hash_set`. If the destination `node_hash_set` already contains an
// element with an equivalent key, that element is not extracted.
// element with an equivalent key, that element is not extracted.
using Base : : merge ;
using Base : : merge ;
@ -322,15 +322,15 @@ class node_hash_set
// node_hash_set::swap(node_hash_set& other)
// node_hash_set::swap(node_hash_set& other)
//
//
// Exchanges the contents of this `node_hash_set` with those of the `other`
// Exchanges the contents of this `node_hash_set` with those of the `other`
// flat hash map , avoiding invocation of any move, copy, or swap operations on
// node hash set , avoiding invocation of any move, copy, or swap operations on
// individual elements.
// individual elements.
//
//
// All iterators and references on the `node_hash_set` remain valid, excepting
// All iterators and references on the `node_hash_set` remain valid, excepting
// for the past-the-end iterator, which is invalidated.
// for the past-the-end iterator, which is invalidated.
//
//
// `swap()` requires that the flat hash set's hashing and key equivalence
// `swap()` requires that the node hash set's hashing and key equivalence
// functions be Swappable, and are exchaged using unqualified calls to
// functions be Swappable, and are exchaged using unqualified calls to
// non-member `swap()`. If the map 's allocator has
// non-member `swap()`. If the set 's allocator has
// `std::allocator_traits<allocator_type>::propagate_on_container_swap::value`
// `std::allocator_traits<allocator_type>::propagate_on_container_swap::value`
// set to `true`, the allocators are also exchanged using an unqualified call
// set to `true`, the allocators are also exchanged using an unqualified call
// to non-member `swap()`; otherwise, the allocators are not swapped.
// to non-member `swap()`; otherwise, the allocators are not swapped.
@ -385,14 +385,14 @@ class node_hash_set
// node_hash_set::bucket_count()
// node_hash_set::bucket_count()
//
//
// Returns the number of "buckets" within the `node_hash_set`. Note that
// Returns the number of "buckets" within the `node_hash_set`. Note that
// because a flat hash map contains all elements within its internal storage,
// because a node hash set contains all elements within its internal storage,
// this value simply equals the current capacity of the `node_hash_set`.
// this value simply equals the current capacity of the `node_hash_set`.
using Base : : bucket_count ;
using Base : : bucket_count ;
// node_hash_set::load_factor()
// node_hash_set::load_factor()
//
//
// Returns the current load factor of the `node_hash_set` (the average number
// Returns the current load factor of the `node_hash_set` (the average number
// of slots occupied with a value within the hash map ).
// of slots occupied with a value within the hash set ).
using Base : : load_factor ;
using Base : : load_factor ;
// node_hash_set::max_load_factor()
// node_hash_set::max_load_factor()