Book Image

Learning Boost C++ Libraries

By : Arindam Mukherjee
Book Image

Learning Boost C++ Libraries

By: Arindam Mukherjee

Overview of this book

Table of Contents (19 chapters)
Learning Boost C++ Libraries
Credits
About the Author
About the Reviewers
www.PacktPub.com
Preface
Index

Containers for multi-criteria lookups


Consider a collection of objects of type PersonEntry, as defined in the following code:

 1 struct PersonEntry
 2 {
 3   std::string name;
 4   std::string phoneNumber;
 5   std::string city;
 6 };

An object of this type represents an entry in a telephone directory perhaps. How would you design a data structure that allows you to look up a person by name? We can use a std::set of PersonEntry objects for it, with an appropriate ordering relation defined for PersonEntry. Since we want to search by name, we should define the ordering relationship by name:

 1 bool operator<(const PersonEntry& left, 
 2                const PersonEntry& right) {
 3   return left.name< right.name;
 4 }

Now std::set stores only unique elements and any two PersonEntry objects with the same name would be considered duplicates. Since namesakes are common in real life, we should choose a container that allows duplicates, that is, std::multiset. We can then insert elements...