Skip to Main Content
C++ Cookbook
book

C++ Cookbook

by D. Ryan Stephens, Christopher Diggins, Jonathan Turkanis, Jeff Cogswell
November 2005
Beginner to intermediate content levelBeginner to intermediate
594 pages
16h 23m
English
O'Reilly Media, Inc.
Content preview from C++ Cookbook

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. lists 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); ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Start your free trial

You might also like

C++ System Programming Cookbook

C++ System Programming Cookbook

Onorato Vaticone

Publisher Resources

ISBN: 0596007612Supplemental ContentErrata Page