C++:STL之deque容器
程序员文章站
2024-02-12 22:20:10
...
包含头文件
#include<iostream>
#include<deque>
#include<algorithm>
using namespace std;
打印函数
void printfDeque(const deque<int>&d)
{
for (deque<int>::const_iterator it = d.begin(); it != d.end(); it++)
{
cout << *it << " ";
}
cout << endl;
}
//构造函数
void test01()
{
//默认构造
deque<int>d1;
d1 = { 1,2,3,4,5,6,7,8,9 };
//区间构造
deque<int>d2(d1.begin(), d1.end());
printfDeque(d2);
//n个elem拷贝给自身
deque<int>d3(4, 5);
printfDeque(d3);
//拷贝构造
deque<int>d4(d3);
printfDeque(d4);
}
//赋值操作
void test02()
{
deque<int>d1;
//重载等号操作符
d1 = { 1,2,3,4,5 };
//区间赋值
deque<int>d2;
d2.assign(d1.begin(), d1.end());
printfDeque(d2);
//n个elem拷贝给自身
deque<int>d3;
d3.assign(5, 10);
printfDeque(d3);
}
//大小操作
void test03()
{
deque<int>d1;
//判断是否为空
d1.empty();
//返回个数
d1.size();
//重新指定容器大小,若容器变长,则填充默认值在新的位置,变短则删除
d1.resize(10);
//重新指定容器大小,若容器变长,则填充指定的值在新的位置,变短则删除
d1.resize(15, 1);
printfDeque(d1);
}
//插入和删除
void test04()
{
deque<int>d1 = { 4,5,6 };
//尾部添加
d1.push_back(1);
//头部插入
d1.push_front(0);
printfDeque(d1);
//尾部删除
d1.pop_back();
//头部删除
d1.pop_front();
printfDeque(d1);
//在指定位置插入元素8,返回新数据位置
d1.insert(d1.begin()+2, 8);
printfDeque(d1);
//在指定位置插入n个elem数据,无返回值
d1.insert(d1.begin(), 2 ,9);
printfDeque(d1);
//在指定位置插入区间数据,无返回值
deque<int>d2;
d2.insert(d2.begin(),d1.begin(), d1.end());
printfDeque(d2);
//清空
d2.clear();
//删除区间数据,返回下一个数据位置
d1.erase(d1.begin() + 2, d1.end());
printfDeque(d1);
//删除位置数据,返回下一个数据位置
d1.erase(d1.begin());
printfDeque(d1);
}
//数据存取
void test05()
{
deque<int>d1 = {0,1,2,3,4,5};
//at返回索引所指数据
d1.at(1);
//重载[]
d1[2];
//返回第一个数据
d1.front();
//返回最后一个数据
d1.back();
}
//排序
void test06()
{
deque<int>d1 = { 45,15,78,25,48,44 };
//对区间内元素排序升序
sort(d1.begin(),d1.end());
printfDeque(d1);
}