1.关于本文
文中描述的是一个学习List类过程中写的程序,程序中进行了以下步骤
1)创建list<string>
2)调用函数push_front和push_back添加元素
3)调用迭代器遍历list
4)调用函数front和back查找首尾结点
5)调用函数pop_front和pop_back删除元素
6)调用函数insert添加元素
7)调用函数erase和removed删除元素
8)调用函数sort对list进行排序
9)调用函数merge将两个list合并
10)调用函数reverse翻转list中全部元素
11)调用函数clear清空list中全部元素
2.程序代码
下面的代码是在VC++6.0中编译的
#include <iostream> #include <cstdlib> #include <string> #include <list> using namespace std; int main() { // 创建list string temp[] = {"Tsybius", "Galatea"}; list<string> namelist (temp, temp + sizeof(temp)/sizeof(string)); // 添加元素 cout << "Push from front and back" << endl; namelist.push_front("Quintus"); namelist.push_back("Titus"); cout << endl; // 遍历list cout << "Traverse List" << endl; list<string> :: iterator iter; for(iter = namelist.begin(); iter != namelist.end(); iter++) { cout << *iter << ‘ ‘; } cout << endl << endl; // 首尾结点 cout << "Front & Back" << endl; cout << "front: " << namelist.front() << endl; cout << "back: " << namelist.back() << endl; cout << endl; // 删除元素 cout << "Delete from Front and Back" << endl; namelist.pop_front(); namelist.pop_back(); cout << endl; // 遍历list cout << "Traverse List" << endl; for(iter = namelist.begin(); iter != namelist.end(); iter++) { cout << *iter << ‘ ‘; } cout << endl << endl; // 插入元素 cout << "Insert Data" << endl; namelist.insert(namelist.begin(), "Julius"); iter = namelist.begin(); iter++;iter++; //注意:不能写成iter+=2,相关运算符没有重载 namelist.insert(iter, "Marcus"); cout << endl; // 遍历list cout << "Traverse List" << endl; for(iter = namelist.begin(); iter != namelist.end(); iter++) { cout << *iter << ‘ ‘; } cout << endl << endl; // 删除数据 cout << "Erase Data" << endl; iter = namelist.begin(); advance(iter, 3); namelist.erase(iter); //方法1 namelist.remove("Julius"); //方法2 cout << endl; // 遍历list cout << "Traverse List" << endl; for(iter = namelist.begin(); iter != namelist.end(); iter++) { cout << *iter << ‘ ‘; } cout << endl << endl; // 排序List(自小到大,sort中可以添加返回布尔值的函数,作为比较依据) namelist.sort(); // 遍历list cout << "Traverse List" << endl; for(iter = namelist.begin(); iter != namelist.end(); iter++) { cout << *iter << ‘ ‘; } cout << endl << endl; // 与另一个list合并 cout << "Merge Two Lists" << endl; string temp2[] = {"Licinius", "Cicero"}; list<string> namelist2 (temp2, temp2 + sizeof(temp2)/sizeof(string)); namelist.merge(namelist2); cout << endl; // 遍历list cout << "Traverse List" << endl; for(iter = namelist.begin(); iter != namelist.end(); iter++) { cout << *iter << ‘ ‘; } cout << endl << endl; // 翻转list cout << "Reverse List" << endl; namelist.reverse(); cout << endl; // 遍历list cout << "Traverse List" << endl; for(iter = namelist.begin(); iter != namelist.end(); iter++) { cout << *iter << ‘ ‘; } cout << endl << endl; // 清空List cout << "Size: " << namelist.size() << endl; cout << "IsEmpty? " << namelist.empty() << endl; namelist.clear(); cout << "Size: " << namelist.size() << endl; cout << "IsEmpty? " << namelist.empty() << endl; system("pause"); return 0; }
4.运行结果
END