»
(12) C++14 list
(18) C++14 smart pointer and reference counter*
(19) C++14 pthread*
(20) C++14 synchronized locker--mutex*
(24) C++ time and sleep*
(25) C++ High Precision Computation*
(27) C++14 std::string*
(31) Advanced Level C++ Tech*
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(){
list- table;
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