6.5. Storing Objects in a list
Problem
You need to store
items in a sequence, but your requirements don’t match up well with a vector
. Specifically, you need to be able to efficiently add
and remove items in the middle of the sequence, not just at the end.
Solution
Use a list
, declared in <list>
, to hold your data. list
s
offer better performance and more flexibility when modifying the sequence at someplace
other than the beginning or the end. Example
6-5 shows you how to use a list
, and shows off some of
its unique operations.
Example 6-5. Using a list
#include <iostream> #include <list> #include <string> #include <algorithm> using namespace std; // A simple functor for printing template<typename T> struct printer { void operator()(const T& s) { cout << s << '\n'; } }; bool inline even(int n) { return(n % 2 == 0); } printer<string> strPrinter; printer<int> intPrinter; int main() { list<string> lstOne; list<string> lstTwo; lstOne.push_back("Red"); lstOne.push_back("Green"); lstOne.push_back("Blue"); lstTwo.push_front("Orange"); lstTwo.push_front("Yellow"); lstTwo.push_front("Fuschia"); for_each(lstOne.begin(), // Print each element in the list lstOne.end(), // with a custom functor, print strPrinter); lstOne.sort(); // list has a member for sorting lstTwo.sort(); lstOne.merge(lstTwo); // Merge the two lists and print for_each(lstOne.begin(), // the results (the lists must be lstOne.end(), // sorted before merging) strPrinter); list<int> intLst; intLst.push_back(0); intLst.push_back(1); ...
Get C++ Cookbook now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.