C++ Foundation —— (12) C++14 list (Not translated)
»
    list,列表。在C++中,list是一种链表结构,是一种双向链表结构。它的优势在于插入和删除快速,而读取需要从表头依次遍历到需要读取的位置。list不允许下标方式的读写数据。所以,list读写中间位置的数据会比较慢,而优势在于列表头部和列表尾部的插入与删除快速。

    下面是list的使用的一个例子:

#include <iostream>
#include <list>
using namespace std;
typedef struct _item{
    int resourceId;
    uint8_t resourceType;
    string resourceName;
    bool operator < (_item& b) const
    {
        if(this->resourceType < b.resourceType){
            return true;
        }else if(this->resourceType == b.resourceType){
            return this->resourceName < b.resourceName;
        }else{
            return false;
        }
    }
}Item;
bool descendSortItemById(const Item& t1,const Item& t2){
    return t1.resourceId>t2.resourceId;//<产生升序结果;>产生降序结果
}

int main(){
    listtable;
    Item disk1{1,1,"disk1"};
    table.push_back(disk1);
    Item keyboard1{2,2,"keyboard1"};
    table.push_back(keyboard1);
    Item disk2{3,1,"disk2"};
    table.push_back(disk2);
    table.sort();
    cout<<"(1)ascend sorted by Name:"<<endl;
    cout<<"Type\t\t"<<"Name\t\t"<<"Id"<<endl;
    for(auto&i:table){
        cout<<(int)i.resourceType<<"\t\t"<<i.resourceName<<"\t\t"<<i.resourceId<<endl;
    }
    cout<<endl;
    cout<<"(2)descend sorted by Id:"<<endl;
    cout<<"Type\t\t"<<"Name\t\t"<<"Id"<<endl;
    table.sort(descendSortItemById);
    for(auto&i:table){
        cout<<(int)i.resourceType<<"\t\t"<<i.resourceName<<"\t\t"<<i.resourceId<<endl;
    }
}

打印结果:
(1)ascend sorted by Name:
Type            Name            Id
1               disk1           1
1               disk2           3
2               keyboard1               2

(2)descend sorted by Id:
Type            Name            Id
1               disk2           3
2               keyboard1               2
1               disk1           1
«
--Alex.Zhang
--www.v-signon.com Learningers Co-Encouraged
Back
Personal Art: www.up-task.com Unit: Individual
中文 Русский 京ICP备19038994号-2
If the content on this website infringes upon your any rights, please contact me at 1307776259@qq.com for removal