Re: Map to store 3 items
Brad <brad@16systems.com> wrote in news:fvtks8$jte$1@solaris.cc.vt.edu:
New to C++. Just ran into a need to store three things in a map. Before
trying it, I thought I'd post here and ask for advice. Here is an
example of what I need to store:
map<string name, string prefix, int length>
Both name and prefix would be unique for each map entry.
It's not clear what constitutes your map key and what is in your map
value. In general, both can be structs or classes. If you use a struct
or class as the map key you have to define operator<() for it, otherwise
the map could not maintain the keys in sorted order. E.g.
struct MyKeyType {
std::string name_;
std::string prefix_;
MyKeyType(const std::string& name, const std::string& prefix)
: name_(name), prefix_(prefix)
{}
bool operator<(const MyKeyType& b) const {
return name_<b.name_ || (name_==b.name_ && prefix_<b.prefix_);
}
};
std::map<MyKeyType, int> my_map;
my_map[MyKeyType("foo","bar")] = 22;
std::string prefix1 = my_map.begin()->first.prefix_;
The same can be accomplished by using std::pair, but then you cannot give
meaningful names to the struct members, and combining more data to the
key becomes cumbersome.
hth
Paavo