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

©Copyright 1996 Rogue Wave Software

RWTValMap<K,T,C>

Synopsis

#include <rw/tvmap.h> 
RWTValMap<K,T,C> m;

Standard C++ Library Dependent!


RWTValMap requires the Standard C++ Library.


Description

This class maintains a collection of keys, each with an associated item of type T. Order is determined by the key according to a comparison object of type C. C must induce a total ordering on elements of type K via a public member

bool operator()(const K& x, const K& y) const

which returns true if x and its partner should precede y and its partner within the collection. The structure less<T> from the C++-standard header file <functional> is an example.

RWTValMap<K,T,C> will not accept a key that compares equal to any key already in the collection. (RWTValMultiMap<K,T,C> may contain multiple keys that compare equal to each other.) Equality is based on the comparison object and not on the == operator. Given a comparison object comp, keys a and b are equal if

!comp(a,b) && !comp(b,a).

Persistence

Isomorphic.

Examples

In this example, a map of RWCStrings and RWDates is exercised.

//
// tvmbday.cpp
//
#include <rw/tvmap.h>
#include <rw/cstring.h>
#include <rw/rwdate.h>
#include <iostream.h>

main(){
  RWTValMap<RWCString, RWDate, less<RWCString> > birthdays;

  birthdays.insert("John", RWDate(12, "April",1975));
  birthdays.insert("Ivan", RWDate(2, "Nov", 1980));

  // Alternative syntax:
  birthdays["Susan"] = RWDate(30, "June", 1955);
  birthdays["Gene"] = RWDate(5, "Jan", 1981);

  // Print a birthday:
  cout << birthdays["John"] << endl;
  return 0;
}

Program Output:
04/12/75

Related Classes

Class RWTValMultiMap<K,T,C> offers the same interface to a collection that accepts multiple keys that compare equal to each other. RWTValSet<T,C> maintains a collection of keys without the associated values.

Class map<K,T,C,allocator> is the C++-standard collection that serves as the underlying implementation for this collection.

Public Typedefs

typedef map<K,T,C,allocator>                   container_type;
typedef container_type::iterator               iterator;
typedef container_type::const_iterator         const_iterator;
typedef container_type::size_type              size_type;
typedef pair <const K,T>                       value_type;
typedef pair <const K,T>&                      reference;
typedef const pair <const K,T>&                const_reference;

Public Constructors

RWTValMap<K,T,C>(const C& comp = C());
RWTValMap<K,T,C>(const container_type& m);
RWTValMap<K,T,C>(const RWTValMap<K,T,C>& rwm);
RWTValMap<K,T,C>(const value_type* first,
     const value_type* last,const C& comp = C());

Public Member Operators

RWTValMap<K,T,C>&
operator=(const RWTValMap<K,T,C>& m);
RWTValMap<K,T,C>&
operator=(const container_type& m);
bool
operator<(const RWTValMap<K,T,C>& m) const;
bool
operator<(const container_type & m) const;
bool
operator==(const RWTValMap<K,T,C>& m) const;
bool
operator==(const container_type & m) const;
T&
operator[](const K& key);

Public Member Functions

void
apply(void (*fn)(const K&, T&, void*),void* d);
void
apply(void (*fn)(const K&, const T&, void*), void* d) const;
void
applyToKeyAndValue(void (*fn)(const K&, T&, void*),void* d);
void
applyToKeyAndValue
(void (*fn)(const K&, const T&, void*), void* d) const;
iterator
begin();
const_iterator
begin() const;
void
clear();
bool
contains(const K& key) const;
bool
contains(bool (*fn)(const_reference,void*), void* d) const;
iterator
end();
const_iterator
end() const;
size_type
entries() const;
bool
find(const K& key, Key& r) const;
bool
find(bool (*fn)(const_reference,void*), void* d, 
     pair<K,T>& r) const;
bool
findValue(const K& key, T& r) const;
bool
findKeyValue(const K& key, K& kr, T& tr) const;
bool
insert(const K& key, const T& a);
bool
insertKeyAndValue(const K& key, const T& a);
bool
isEmpty() const;
size_type
occurrencesOf(const K& key) const;
size_type
occurrencesOf
(bool (*fn)(const_reference&,void*),void* d) const;
bool
remove(const K& key);
bool
remove(bool (*fn)(const_reference,void*), void* d);
size_type
removeAll(const K& key);
size_type
removeAll(bool (*fn)(const_reference,void*), void* d);
map<K,T,C,allocator>&
std();
const map<K,T,C,allocator>&
std() const;

Related Global Operators

RWvostream&
operator<<(RWvostream& strm, const RWTValMap<K,T,C>& coll);
RWFile&
operator<<(RWFile& strm, const RWTValMap<K,T,C>& coll);
RWvistream&
operator>>(RWvistream& strm, RWTValMap<K,T,C>& coll);
RWFile&
operator>>(RWFile& strm, RWTValMap<K,T,C>& coll);
RWvistream&
operator>>(RWvistream& strm, RWTValMap<K,T,C>*& p);
RWFile&
operator>>(RWFile& strm, RWTValMap<K,T,C>*& p);