zoukankan      html  css  js  c++  java
  • STL list容器API

    list容器:链表容器,不支持随机遍历。不能用通用的sort算法(要有随机访问迭代器),容器自己有排序算法

    #define _CRT_SECURE_NO_WARNINGS
    #include<iostream>
    #include<list>
    #include<algorithm>
    #include<vector>
    using namespace std;
    
    void printList(const list<int> &mylist){
    
        for (list<int>::const_iterator it = mylist.begin(); it != mylist.end(); ++it){
            cout << *it << " ";
        }
        cout << endl;
    }    
    
    
    //1. list构造函数
    /*
    list<T> lstT;//list采用采用模板类实现,对象的默认构造形式:
    list(beg,end);//构造函数将[beg, end)区间中的元素拷贝给本身。
    list(n,elem);//构造函数将n个elem拷贝给本身。
    list(const list &lst);//拷贝构造函数。
    */
    void test01(){
        
        //list迭代器是双向迭代器,
        list<int> mylist(10, 1);
        list<int> mylist2(mylist.begin(), mylist.end());
        printList(mylist);
    
        list<int>::iterator it;
        //sort(mylist.begin(), mylist.end()); //sort算法不能对list容器排序
        mylist.sort();
    }
    
    //2. 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值匹配的元素。
    */
    
    bool mycompare(int val){
        return val > 50;
    }
    
    
    void test02(){
        
        list<int> mylist;
        mylist.push_back(10);
        mylist.push_back(20);
        mylist.push_back(30);
        mylist.push_back(40);
        mylist.push_back(50);
        mylist.push_front(100);
        mylist.push_front(200);
        mylist.push_front(300);
        mylist.push_front(400);
    
        vector<int> v;
        v.push_back(1000);
        v.push_back(2000);
    
        mylist.insert(++mylist.begin(), v.begin(), v.end());
    
        printList(mylist);
        mylist.push_back(300);
        mylist.push_back(300);
    
        printList(mylist);
    
        //mylist.remove(300);
        mylist.remove_if(mycompare);
    
        printList(mylist);
    
    }
    
    //3.  list赋值操作 list数据的存取
    /* 
    assign(beg, end);//将[beg, end)区间中的数据拷贝赋值给本身。
    assign(n, elem);//将n个elem拷贝赋值给本身。
    list& operator=(const list &lst);//重载等号操作符
    swap(lst);//将lst与本身的元素互换。
    front();//返回第一个元素。
    back();//返回最后一个元素。
    
    
    */
    
    void test03(){
        
        list<int> mylist;
        mylist.assign(10,10);
        printList(mylist);
    
        cout << mylist.front() << endl;
        cout << mylist.back() << endl;
    
    }
    
    //4. list反转排序
    /*
    reverse();//反转链表,比如lst包含1,3,5元素,运行此方法后,lst就包含5,3,1元素。
    sort(); //list排序
    */
    
    bool canbucanswap(int v1,int v2){
        return v1 > v2;
    }
    void test04(){
    
        list<int> mylist;
        mylist.push_back(10);
        mylist.push_back(40);
        mylist.push_back(30);
        mylist.push_back(50);
        mylist.push_back(20);
    
        printList(mylist);
        mylist.reverse();
        printList(mylist);
    
        //排序
        mylist.sort(canbucanswap);
        printList(mylist);
    }
    
    //list容器迭代器类型要清楚,还要直到list容器是自己提供排序算法,通用的sort算法不能对list排序
    
    int main(){
    
        //test01();
        //test02();
        //test03();
        test04();
    
        system("pause");
        return EXIT_SUCCESS;
    }
  • 相关阅读:
    Super Jumping! Jumping! Jumping!(求最大上升子序列和)
    HZNU1837——一道简单的方程
    C
    B
    A
    bfs-Find a way
    bfs——Red and Black
    dfs——n皇后问题
    dfs——n皇后问题
    python画图中colorbar设置刻度和标签字体大小
  • 原文地址:https://www.cnblogs.com/w-x-me/p/6795929.html
Copyright © 2011-2022 走看看