源文件
#include
#include
#include
#include
using namespace std;
void printDeque(deque d){
for (auto it = d.cbegin();it < d.cend();it ++){
cout << *it<< " ";
}
cout << endl;
}
void dequeContructor(){
//way1
deque d0;
deque d1 {5,4,3};
printDeque(d1);
//way2
deque d2(5);
printDeque(d2);
//way3
deque d3(5,10);
printDeque(d3);
//way4
deque d4(d2);
printDeque(d4);
//way5
array arr {11,22,33,44,55};
deque d5(arr.data()+2,arr.data()+4);
printDeque(d5);
}
void printValue(int value){
cout << value << " ";
}
void dequeTraverse() {
deque d1 {5,6,7,8,9};
//way1
auto it = d1.cbegin();
while (it != d1.cend())
{
cout << *it << " ";
it ++;
}
cout << endl;
//way2
for (auto it = d1.rbegin(); it < d1.rend();it ++){
if (*it == 7){
*it =88;
}
cout << *it << " ";
}
cout << endl;
//way3
for (auto value : d1){
cout << value << " ";
}
cout << endl;
//way4
for_each(d1.crbegin(),d1.crend(),printValue);
cout << endl;
}
void dequeAcess(){
deque d {5,6,7,8,9};
cout << d[2] << endl; //way1
d.at(3) = 99; //way2
cout << d.front() << "~" << d.back() << endl; //way3
//cout << d.data() << endl; deque没有data();
}
void dequeInsertDelete(){
dequed;
//调用push_back()向容器尾部添加数据。
d.push_back(2); //{2}
//调用pop_back()移除容器尾部的一个数据。
d.pop_back(); //{}
//调用push_front()向容器头部添加数据。
d.push_front(2);//{2}
//调用pop_front()移除容器头部的一个数据。
d.pop_front();//{}
//调用 emplace 系列函数,向容器中直接生成数据。
d.emplace_back(2); //{2}
d.emplace_front(3); //{3,2}
//emplace() 需要 2 个参数,第一个为指定插入位置的迭代器,第二个是插入的值。
d.emplace(d.begin() + 1, 4);//{3,4,2}
for (auto i : d) {
cout << i << " ";
}
//erase()可以接受一个迭代器表示要删除元素所在位置
//也可以接受 2 个迭代器,表示要删除元素所在的区域。
d.erase(d.begin());//{4,2}
d.erase(d.begin(), d.end());//{},等同于 d.clear()
std::deque d2{ 1,2 };
//第一种格式用法
d2.insert(d2.begin() + 1, 3);//{1,3,2}
//第二种格式用法
d2.insert(d2.end(), 2, 5);//{1,3,2,5,5}
//第三种格式用法
std::arraytest{ 7,8,9 };
d2.insert(d2.end(), test.begin(), test.end());//{1,3,2,5,5,7,8,9}
//第四种格式用法
d2.insert(d2.end(), { 10,11 });//{1,3,2,5,5,7,8,9,10,11}
for (int i = 0; i < d2.size(); i++) {
cout << d2.at(i) << " ";
}
cout << endl;
}
int main(){
// dequeContructor();
// dequeTraverse();
dequeInsertDelete();
return 0;
}