1概念
1.1雙向容器
1.2原理圖
- 中間插入的和刪除的操作效率低
- 可以隨機存儲 效率高
2常用API
2.1構造函數
void test1(){
deque<int> d1;
deque<int> d2(10,5);
deque<int> d3(d2.begin(),d2.end());
deque<int> d4(d3);
for(deque<int>::iterator it=d4.begin();it!=d4.end();it++){
cout<<*it<<" ";
}
cout<<endl;
}
2.2初始化函數
void test2(){
deque<int> d1;
deque<int> d2;
deque<int> d3;
d1.assign(10,5);
d2.assign(d1.begin(),d1.end());
d3=d2;
d1.swap(d2);
}
2.3大小操作
2.4雙端插入和刪除操作
void test3(){
deque<int> d1;
d1.push_back(100);
d1.push_front(200);
d1.push_front(200);
d1.push_front(200);
int ret1=d1.back();
d1.pop_back();
int ret2=d1.front();
d1.pop_front();
for(deque<int>::iterator it=d1.begin();it!=d1.end();it++){
cout<<*it<< " ";
}
}
2.5數據存儲
2.6插入操作
2.7 刪除操作
3案例
#include<iostream>
#include<vector>
#include<string>
#include<deque>
#include<algorithm>
using namespace std;
class Player{
public:
Player(){}
Player(string name,int sorce):mName(name),mSorce(sorce){}
string mName;
int mSorce;
};
void Create_play(vector<Player>& v){
string name="abcde";
for(int i=0;i<5;i++){
Player p;
p.mName+=name[i];
p.mSorce=0;
v.push_back(p);
}
}
void PrintScore(int val){
cout<<val<<" ";
}
void Set_Sorce(vector<Player>& v){
for(vector<Player>::iterator it=v.begin();it!=v.end();it++){
deque<int> dsorce;
for(int ji=0;ji<10;ji++){
int sorce=rand()%41+60;
dsorce.push_back(sorce);
}
sort(dsorce.begin(),dsorce.end());
dsorce.pop_front();
dsorce.pop_back();
int totalsorce=0;
for(deque<int>::iterator dit=dsorce.begin();dit!=dsorce.end();dit++){
totalsorce+=*dit;
}
int avgsroce=totalsorce/dsorce.size();
(*it).mSorce=avgsroce;
}
}
bool mycompare(Player& p1,Player& p2){
return p1.mSorce<p2.mSorce;
}
void Print_rank(vector<Player>& v){
sort(v.begin,v.end(),mycompare);
for(vector<Player>::iterator it=v.begin();it!=v.end();it++){
cout<<"姓名:"<<(*it).mName<<" "<<"得分:"<<(*it).mName<<endl;
}
}
int main(){
vector<Player> vPlist;
Create_play(vPlist);
Set_Sorce(vPlist);
Print_rank(vPlist);
return 0;
}