C++基础 —— (13)C++14 deque
»
     deque,双向队列。在C++中,双向队列是一种数组拼接成的队列,一种双向读写的队列。它由多个固定大小的连续内存块构成。它的优势在于可以按下标随机访问,而又可以快速在队首和队尾插入和删除。
 
     deque的连续内存块的大小由元素的存储空间大小决定。当deque中的一个元素只有1byte的时候,连续内存块为16个元素;当有2bytes时,连续内存块为8个元素;当有3或4bytes时,连续内存块为4个元素;当有5或6或7或8个bytes的时候,连续内存块为2个元素;大于8个bytes时,连续内存块始终只有1个元素。
 
     deque相对list的优势在于能够随机访问元素。也就是,deque对象中记录了下标和内存空间的关系。但,deque不允许做sort排序操作,而list可以做sort排序操作。
 
     下面是deque的使用的一个例子:
 
 #include <iostream>
 #include <deque>
 using namespace std;
 typedef struct ItemStruct{
     int resourceId;
     uint8_t resourceType;
     string resourceName;
 }Item;
 
 int main(){
     deque<Item>deque_pipe;
     Item disk1{1,1,"disk1"};
     deque_pipe.push_back(disk1);
     Item keyboard1{2,2,"keyboard1"};
     deque_pipe.push_back(keyboard1);
     Item disk2{3,1,"disk2"};
     deque_pipe.push_back(disk2);
 
     cout<<"original items:"<<endl;
     for(auto&i:deque_pipe){
         cout<<(int)i.resourceType<<"\t\t"<<i.resourceName<<"\t\t"<<i.resourceId<<endl;
     }
     cout<<endl;
 
     Item resultGotByPos=deque_pipe.at(2);
     cout<<"got item2:"<<endl;
     cout<<"Type\t\t"<<"Name\t\t"<<"Id"<<endl;
     cout<<(int)resultGotByPos.resourceType<<"\t\t"<<resultGotByPos.resourceName<<"\t\t"<<resultGotByPos.resourceId<<endl;
     cout<<endl;
 
     cout<<"removed item3:"<<endl;
     deque_pipe.erase(deque_pipe.begin()+2);
     cout<<"Type\t\t"<<"Name\t\t"<<"Id"<<endl;
     for(auto&i:deque_pipe){
         cout<<(int)i.resourceType<<"\t\t"<<i.resourceName<<"\t\t"<<i.resourceId<<endl;
     }
 }
 
 打印结果:
 original items:
 1               disk1           1
 2               keyboard1               2
 1               disk2           3
 
 got item2:
 Type            Name            Id
 1               disk2           3
 
 removed item3:
 Type            Name            Id
 1               disk1           1
 2               keyboard1               2
 
«
——张人杰·www.v-signon.com学习者共勉
返回上一页
备案号:京ICP备19038994号-2
个人作品网站:www.up-task.com 主办:个人 English
网站内容如有侵权,请联系删除:1307776259@qq.com