Click on the banner to return to the Class Reference home page.

©Copyright 1996 Rogue Wave Software

rw_hashmap

Synopsis

#include <rw/rwstl/hashmap.h>
rw_hashmap<K,V,Hash,EQ> map;

Description

Class rw_hashmap<K,V,Hash,EQ> maintains a collection of mappings between K and V, implemented as a hash table of pair<const K,V> . Pairs with duplicate keys are not allowed. Two pairs having duplicate keys is the result of the EQ comparison, applied to the first element of each, is TRUE. Since this is a value based collection, objects are copied into and out of the collection. As with all classes that meet the ANSI associative container specification, rw_hashmap provides for iterators that reference its elements. Operations that alter the contents of rw_hashmap may invalidate other iterators that reference the container. Since the contents of rw_hashmap are in pseudo-random order, the only iterator ranges that will usually make sense are the results of calling equal_range(key), and the entire range from begin() to end().

Persistence

None

Public Typedefs

typedef K                  key_type;
typedef Hash               key_hash;
typedef EQ                 key_equal;
typedef pair<K,V>          value_type; // or ... "const K"
typedef (unsigned)         size_type; //from rw_slist
typedef (int)              difference_type; // from rw_slist
typedef (value_type&)      reference;
typedef (const value_type&) const_reference; //from rw_slist
typedef (scoped Iterator)      iterator;
typedef (scoped ConstIterator)  const_iterator;

Public Constructors

rw_hashmap<K,V,Hash,EQ>(size_type sz = 1024, 
                        const Hash& h = Hash(), 
                        const EQ& eq = EQ());
rw_hashmap<K,V,Hash,EQ>(const rw_hashmap<K,V,Hash,EQ>& map);
rw_hashmap<K,V,Hash,EQ>(const_iterator first, 
                        const_iterator bound
                        size_type sz=1024,
                        const Hash& h = Hash(), 
                        const EQ& eq = EQ());
rw_hashmap<K,V,Hash,EQ>(const value_type* first, 
                        const value_type* bound
                        size_type sz=1024,
                        const Hash& h = Hash(), 
                        const EQ& eq = EQ());

Public Destructor

~rw_hashmap<K,V,Hash,EQ>();

Public Operators

rw_hashmap<K,V,Hash,EQ>&
operator=(const rw_hashmap<K,V,Hash,EQ>& rhs);
bool
operator==(const rw_hashmap<K,V,Hash,EQ> & rhs) const;
V&
operator[](const key_type& key);

Accessors

iterator
begin();
const_iterator
begin() const;
iterator
end();
const_iterator
end() const;
pair<const_iterator, const_iterator>
equal_range(const key_type key) const;
pair<iterator, iterator>
equal_range(const key_type key);
const_iterator
lower_bound(const key_type& key) const;
iterator
lower_bound(const key_type& key);
const_iterator
upper_bound(const key_type& key) const;
iterator
upper_bound(const key_type& key);

Const Public Member Functions

size_type
capacity() const;
bool
empty() const;
float
fill_ratio() const;
size_type
size() const;

Mutators

void
clear();
size_type
erase(const key_type& key);
iterator
erase(iterator iter);
iterator
erase(iterator first, iterator bound);
pair<iterator,bool>
insert(const value_type& val);
size_type
insert(iterator ignore, const value_type& val);
size_type
insert(const value_type* first, const value_type* bound);
size_type
insert(const_iterator first, const_iterator bound);
void
swap(rw_hashmap<K,V,Hash,EQ>& other);

Special Methods for Maps

size_type
count(const key_type& key) const;
bool
equal_by_keys(const rw_hashmap<K,V,Hash,EQ>& rhs) const;
const_iterator
find(const key_type& key) const;
iterator
find(const key_type& key);
void
resize(size_type sz);