1 //我们可以象这样来定义一个STL的list: 2 #include <string> 3 #include <list> 4 int main (void) 5 { 6 list<string> Milkshakes; 7 return0; 8 } 9 10 //使用list的成员函数push_back和push_front插入一个元素到list中: 11 #include <string> 12 #include <list> 13 int main (void) 14 { 15 list<string> Milkshakes; 16 Milkshakes.push_back("Chocolate"); 17 Milkshakes.push_back("Strawberry"); 18 Milkshakes.push_front("Lime"); 19 Milkshakes.push_front("Vanilla"); 20 return0; 21 } 22 23 //用for循环来处理list中的元素 24 // 因为STL的list是以双链的list来实现的, 它不支持随机存取。vector和deque(向量和双端队列)和一些其他的STL的容器可以支持随机存取。 25 26 /* 27 || How to print the contents of a simple STL list. Whew! 28 */ 29 #include <iostream.h> 30 #include <string> 31 #include <list> 32 int main (void) 33 { 34 list<string> Milkshakes; 35 list<string>::iterator MilkshakeIterator; 36 Milkshakes.push_back("Chocolate"); 37 Milkshakes.push_back("Strawberry"); 38 Milkshakes.push_front("Lime"); 39 Milkshakes.push_front("Vanilla"); 40 // print the milkshakes 41 Milkshakes.push_front("The Milkshake Menu"); 42 Milkshakes.push_back("*** Thats the end ***"); 43 for (MilkshakeIterator=Milkshakes.begin(); MilkshakeIterator!=Milkshakes.end(); ++MilkshakeIterator) 44 { 45 // dereference the iterator to get the element 46 cout << *MilkshakeIterator << endl; 47 } 48 } 49 50 51 //用STL的通用算法for_each来处理list中的元素 52 //使用STL list和 iterator,我们要初始化、比较和给iterator增量来遍历这个容器。STL通用的for_each 算法能够减轻我们的工作。 53 54 /* 55 || How to print a simple STL list MkII 56 */ 57 #include <iostream.h> 58 #include <string> 59 #include <list> 60 #include <algorithm> 61 PrintIt (string& StringToPrint) { 62 cout << StringToPrint << endl; 63 } 64 int main (void) { 65 list<string> FruitAndVegetables; 66 FruitAndVegetables.push_back("carrot"); 67 FruitAndVegetables.push_back("pumpkin"); 68 FruitAndVegetables.push_back("potato"); 69 FruitAndVegetables.push_front("apple"); 70 FruitAndVegetables.push_front("pineapple"); 71 for_each (FruitAndVegetables.begin(), FruitAndVegetables.end(), PrintIt); 72 } 73 74 75 //用STL的通用算法count()来统计list中的元素个数 76 //STL的通用算法count()和count_it()用来给容器中的对象记数。就象for_each()一样,count()和count_if() 算法也是在iterator范围内来做的。 77 //让我们在一个学生测验成绩的list中来数一数满分的个数。这是一个整型的List。 78 /* 79 || How to count objects in an STL list 80 */ 81 #include <list> 82 #include <algorithm> 83 # 84 int main (void) 85 { 86 list<int> Scores; 87 # 88 Scores.push_back(100); Scores.push_back(80); 89 Scores.push_back(45); Scores.push_back(75); 90 Scores.push_back(99); Scores.push_back(100); 91 # 92 int NumberOf100Scores(0); 93 count (Scores.begin(), Scores.end(), 100, NumberOf100Scores); 94 # 95 cout << "There were " << NumberOf100Scores << " scores of 100" << endl; 96 } 97 98 //用STL的通用算法count_if()来统计list中的元素个数 99 /* 100 || Using a function object to help count things 101 */ 102 #include <string> 103 #include <list> 104 #include <algorithm> 105 conststring ToothbrushCode("0003"); 106 class IsAToothbrush 107 { 108 public: 109 booloperator() ( string& SalesRecord ) 110 { 111 return SalesRecord.substr(0,4)==ToothbrushCode; 112 } 113 }; 114 int main (void) 115 { 116 list<string> SalesRecords; 117 SalesRecords.push_back("0001 Soap"); 118 SalesRecords.push_back("0002 Shampoo"); 119 SalesRecords.push_back("0003 Toothbrush"); 120 SalesRecords.push_back("0004 Toothpaste"); 121 SalesRecords.push_back("0003 Toothbrush"); 122 int NumberOfToothbrushes(0); 123 count_if (SalesRecords.begin(), SalesRecords.end(), 124 IsAToothbrush(), NumberOfToothbrushes); 125 cout << "There were " 126 << NumberOfToothbrushes 127 << " toothbrushes sold" << endl; 128 } 129 130 131 132 133 134 //取出最后一个元素 135 cout << "------------------------------------------------" << endl << "操作:取出最后一个元素" << endl; 136 cout << lInt.back() << endl; 137 138 //取出最前一个元素 139 cout << "------------------------------------------------" << endl << "操作:取出最前一个元素" << endl; 140 cout << lInt.front() << endl; 141 142