• C++ STL 之 list


    #include <list>
    #include <iostream>
    using namespace std;
    
    // 打印list元素
    void PrintList(list<int>& L)
    {
        for (list<int>::iterator it = L.begin(); it != L.end(); it++)
        {
            cout << *it << " ";
        }
        cout << endl;
    }
    
    // 初始化
    // list<T> lstT;//list 采用采用模板类实现,对象的默认构造形式:
    // list(beg, end);//构造函数将[beg, end)区间中的元素拷贝给本身。
    // list(n, elem);//构造函数将 n 个 elem 拷贝给本身。
    // list(const list &lst);//拷贝构造函数。
    void test01()
    {
        list<int> mlist1;
        list<int> mlist2(10, 10);
        list<int> mlist3(mlist2);
        list<int> mlist4(mlist2.begin(), mlist2.end());
        PrintList(mlist2);
        PrintList(mlist3);
        PrintList(mlist4);
        cout << "-------------------------------" << endl;
    }
    
    // list容器的插入和删除
    // push_back(elem);//在容器尾部加入一个元素
    // pop_back();//删除容器中最后一个元素
    // push_front(elem);//在容器开头插入一个元素
    // pop_front();//从容器开头移除第一个元素
    // insert(pos, elem);//在 pos 位置插 elem 元素的拷贝,返回新数据的位置。
    // insert(pos, n, elem);//在 pos 位置插入 n 个 elem 数据,无返回值。
    // insert(pos, beg, end);//在 pos 位置插入[beg,end)区间的数据,无返回值。
    // clear();//移除容器的所有数据
    // erase(beg, end);//删除[beg,end)区间的数据,返回下一个数据的位置。
    // erase(pos);//删除 pos 位置的数据,返回下一个数据的位置。
    // remove(elem);//删除容器中所有与 elem 值匹配的元素
    void test02()
    {
        list<int> mlist;
        // 插入操作
        mlist.push_back(100);
        mlist.push_front(200);
        mlist.insert(mlist.begin(), 300);
        mlist.insert(mlist.end(), 400);
        mlist.insert(mlist.end(), 200);
        PrintList(mlist);
        list<int>::iterator it = mlist.begin();
        it++;
        it++;
        mlist.insert(it, 500);
        mlist.insert(mlist.end(), 200);
        PrintList(mlist);
        // 删除
        // mlist.pop_back();
        // mlist.pop_front();
        mlist.remove(200); // 删除匹配所有值
        PrintList(mlist);
        // mlist.erase(mlist.begin(), mlist.end());
        PrintList(mlist);
        cout << "-------------------------------" << endl;
    }
    
    // list大小操作
    // size();//返回容器中元素的个数
    // empty();//判断容器是否为空
    // resize(num);//重新指定容器的长度为 num,若容器变长,则以默认值填充新位置。如果容器变短,则末尾超出容器长度的元素被删除。
    // resize(num, elem);//重新指定容器的长度为 num,若容器变长,则以 elem 值填充新位置。如果容器变短,则末尾超出容器长度的元素被删除。
    
    // 赋值操作
    // assign(beg, end);//将[beg, end)区间中的数据拷贝赋值给本身。
    // assign(n, elem);//将 n 个 elem 拷贝赋值给本身。
    // list& operator=(const list &lst);//重载等号操作符
    // swap(lst);//将 lst 与本身的元素互换。
    void test03()
    {
        list<int> mlist;
        mlist.assign(10, 10);
        list<int> mlist2;
        mlist2 = mlist;
        PrintList(mlist);
        mlist2.push_back(11);
        PrintList(mlist2);
        cout << "------------------" << endl;
        mlist2.swap(mlist);
        PrintList(mlist);
        PrintList(mlist2);
        cout << "------------------" << endl;
    }
    
    // 排序 翻转
    // reverse();//反转链表,比如 lst 包含 1,3,5 元素,运行此方法后,lst 就包含 5,3,1 元素。
    // sort(); //list 排序
    void test04()
    {
        list<int> mlist;
        for (int i = 0; i < 10; i++)
        {
            mlist.push_back(i);
        }
        PrintList(mlist);
        // 容器元素反转
        mlist.reverse();
        PrintList(mlist);
        cout << "--------------------" << endl;
    }
    
    bool muCompare(int v1, int v2)
    {
        return v1 > v2;
    }
    
    // 排序
    void test05()
    {
        list<int> mlist;
        mlist.push_back(2);
        mlist.push_back(1);
        mlist.push_back(7);
        mlist.push_back(5);
        PrintList(mlist);
        // 排序默认从小到大排序
        mlist.sort();
        PrintList(mlist);
        // 从大到小排序
        mlist.sort(muCompare);
        PrintList(mlist);
    }
    
    int main()
    {
        test01();
        test02();
        test03();
        test04();
        test05();
        getchar();
        return 0;
    }
  • 相关阅读:
    SetThreadAffinityMask设置线程亲缘性
    Delphi 获取北京时间(通过百度和timedate网站)
    delphi 实现微信开发
    翻书的效果:FMX.TSwipeTransitionEffect Animation
    [每日一题] OCP1z0-047 :2013-07-15 drop column
    Delphi获取当前系统时间(使用API函数GetSystemTime)
    Delphi代码中嵌入ASM代码
    Delphi Jpg和Gif转Bmp
    Delphi RichEdit的内容保存为图片
    Delphi 实现任务栏多窗口图标显示
  • 原文地址:https://www.cnblogs.com/duxie/p/10923720.html
Copyright © 2020-2023  润新知