首页 > 代码库 > 【C++】List类学习

【C++】List类学习

>

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