目录
1.什么是deque容器
deque本质上是一个双向数组,其中存在一个中控器来控制缓冲区中的元素,从而实现数组的连续性
2. deque容器的构造函数
void Print(const deque<int>& d)
{
for (auto i = d.begin(); i != d.end(); i++)
{
cout << *i << " ";
}
cout << endl;
}
void test01()
{
//创建一个deque容器
deque<int>d1;
//尾插
for (int i = 0; i < 10; i++)
{
d1.push_back(i);
}
Print(d1);
//区间进行初始化
deque<int>d2(d1.begin(), d1.end());
Print(d2);
deque<int>d3(d2);
Print(d3);
deque<int>d4(10, 100);
Print(d4);
}
int main()
{
test01();
return 0;
}
3.deque的赋值操作
1. = 操作符
void Print(const deque<int>& d)
{
for (auto i = d.begin(); i != d.end(); i++)
{
cout << *i << " ";
}
cout << endl;
}
void test01()
{
deque<int>d1;
for (int i = 0; i < 10; i++)
{
d1.push_back(i);
}
Print(d1);
//赋值操作符 =
deque<int>d2;
d2 = d1;
Print(d2);
}
int main()
{
test01();
return 0;
}
2. assign方法
#include"Deque.h"
void Print(const deque<int>& d)
{
for (auto i = d.begin(); i != d.end(); i++)
{
cout << *i << " ";
}
cout << endl;
}
void test01()
{
deque<int>d1;
for (int i = 0; i < 10; i++)
{
d1.push_back(i);
}
Print(d1);
//assign赋值
deque<int>d3;
d3.assign(d1.begin(), d1.end());
Print(d3);
deque<int>d4;
d4.assign(10, 100);
Print(d4);
}
int main()
{
test01();
return 0;
}
4.deque容器的大小
注意:
deque和vector虽然都是数组,但是deque容器没有容量这个概念
使用到的函数
- empty() 用来判断容器是否为空
- size() 用来计算容器的大小
- resize() 重新设置容器的大小(如果设置的容器大小大于原大小,则补0)
void Print(const deque<int>& d)
{
for (auto i = d.begin(); i != d.end(); i++)
{
cout << *i << " ";
}
cout << endl;
}
void test01()
{
deque<int>d1;
for (int i = 0; i < 10; i++)
{
d1.push_back(i);
}
Print(d1);
if (d1.empty())
{
cout << "容器为空" << endl;
}
else
{
cout << "d1的大小:"<<d1.size() << endl;
}
d1.resize(100);
cout << "d1的大小:"<<d1.size() << endl;
Print(d1);
}
int main()
{
test01();
return 0;
}
5.deque的插入和删除
使用到的函数:
insert()和erase()函数
1. 插入
void Print(const deque<int>& d)
{
for (auto i = d.begin(); i != d.end(); i++)
{
cout << *i << " ";
}
cout << endl;
}
void test01()
{
deque<int>d1;
//尾插
for (int i = 0; i < 2; i++)
{
d1.push_back(i + 1);
}
Print(d1);
//头插
for (int i = 0; i < 2; i++)
{
d1.push_front(i + 1);
}
Print(d1);
//1.随机插入
d1.insert(d1.begin()+1,100);
print(d1);
//2.插入多个重复数
d1.insert(d1.begin(),2,100);
print(d1);
//3.插入一个区间
d1.insert(d1.begin(),d1.begin(),d1.end());
Print(d1);
}
int main()
{
test01();
return 0;
}
2. 删除
如果要删除整个容器可以使用clear()函数
void Print(const deque<int>& d)
{
for (auto i = d.begin(); i != d.end(); i++)
{
cout << *i << " ";
}
cout << endl;
}
void test02()
{
deque<int>d1;
for (int i = 0; i < 5; i++)
{
d1.push_back(i * 10);
}
Print(d1);
//1.指定位置删除
d1.erase(d1.begin());
Print(d1);
//2.指定区间删除
d1.erase(d1.begin(), d1.end());
Print(d1);
}
int main()
{
test02();
return 0;
}
6.数据的获取
使用到的函数
void test01()
{
deque<int>d1;
d1.push_back(10);
d1.push_back(10);
d1.push_back(10);
d1.push_front(20);
d1.push_front(20);
d1.push_front(20);
for (int i = 0; i < d1.size(); i++)
{
cout << d1[i] <<" ";
}
cout << endl;
for (int i = 0; i < d1.size(); i++)
{
cout << d1.at(i) <<" ";
}
cout << endl;
cout << "第一个元素为多少:" << d1.front() << endl;
cout << "最后一个元素为多少:" << d1.back() << endl;
}
int main()
{
test01();
return 0;
}
加油!