功能:双端数组,可以对头端进行插入删除操作
deque内部有一个中控器,维护每段缓冲区的内容,缓冲区中存放真实数据
中控器维护的是每个缓冲区的地址,使得使用deque时像一片连续的内存空间
deque迭代器也是支持随机访问的
deque deq;
默认构造函数deque<string> deq;
deque(bug, end);
构造函数将[beg, end)区间中的元素拷贝给本身deque<string> deq;
deque<string> deq_copy(deq.begin(), deq.end());
deque(n, elem);
构造函数将n个elem拷贝给本身deque<string> deq(3, 10);
deque(const deque& dep);
拷贝构造函数deque<string> deq;
deque<string> deq_copy(deq);
deque& operator=(const deque& deq);
重载等号运算符deque<int> deq;
for (int i = 0; i < 10; i++)
{
deq.push_back(i);
}
print(deq);
deque<int> deq_2 = deq;
print(deq_2);
assign(beg, end);
将[beg, end) 区间内的数据拷贝赋值给本身deque<int> deq;
for (int i = 0; i < 10; i++)
{
deq.push_back(i);
}
print(deq);
deque<int> deq_2;
deq_2.assign(deq.begin(), deq.end());
print(deq_2);
assign(n, elem);
将n个elem拷贝赋值给本身deque<int> deq;
deq.assign(10, 8);
print(deq);
deque.empty();
判断容器是否为空deque<int> deq;
deq.assign(10, 8);
std::cout << "deq 是否为空" << deq.empty() << std::endl;
deque.size();
返回容器中元素的个数deque<int> deq;
deq.assign(10, 8);
std::cout << "deq 大小" << deq.size() << std::endl;
deque.resize();
更新指定容器的长度num, 若容器变长,则以默认值填充新位置,若容器变短,则超出末尾的长度的元素将被删除deque<int> deq;
deq.assign(10, 8);
deq.resize(5);
print(deq);
deque.resize(num, elem);
重新指定容器的长度num,若容器变长将以elem值填充新位置,如果容器变短,末尾超出部分将被删除deque<int> deq;
deq.assign(10, 8);
deq.resize(15, 2);
print(deq);
push_back(elem);
在容器尾部添加一个元素deque<int> deq;
for (int i = 0; i < 10; i++)
{
deq.push_back(i);
}
print(deq);
push_front(elem);
在容器头部插入一个元素deque<int> deq;
for (int i = 0; i < 10; i++)
{
deq.push_front(i);
}
print(deq);
pop_back();
删除容器最后一个元素deque<int> deq;
for (int i = 0; i < 10; i++)
{
deq.push_front(i);
}
deq.pop_back();
print(deq);
pop_front();
删除容器第一个元素deque<int> deq;
for (int i = 0; i < 10; i++)
{
deq.push_front(i);
}
deq.pop_front();
print(deq);
insert(pos, elem);
在pos位置插入一个elem元素的拷贝,返回新数据的位置 deque<int> deq;
deque<int>::iterator it = deq.insert(deq.begin(), 12);
std::cout << *it << std::endl;
print(deq);
insert(pos, n, elem);
在pos位置插入n个elem的元素,无返回值deque<int> deq;
deq.insert(deq.begin(), 4, 12);
print(deq);
insert(pos, deb, end);
在pos位置插入[beg, end) 区间的数据,无返回值 deque<int> deq;
deq.insert(deq.begin(), 4, 12);
print(deq);
deque<int> deq_2;
deq_2.insert(deq_2.begin(), deq.begin(), deq.end());
print(deq_2);
clear();
清空容器的所有操作 deque<int> deq;
deq.insert(deq.begin(), 4, 12);
print(deq);
deq.clear();
print(deq);
erase(beg, end);
删除[beg, end)区间的数据,返回下一个数据的位置deque<int> deq;
deq.insert(deq.begin(), 4, 12);
deq.erase(deq.begin(), deq.end());
print(deq);
erase(pos);
删除pos位置的数据,返回下一个数据的位置deque<int> deq;
deq.insert(deq.begin(), 4, 12);
deq.erase(deq.begin());
print(deq);
at(int idx);
返回索引idx所指的数据deque<int> deq;
deq.insert(deq.begin(), 4, 12);
std::cout << deq.at(1) << std::endl;
operator[];
返回索引idx所指的数据deque<int> deq;
deq.insert(deq.begin(), 4, 12);
std::cout << deq[1] << std::endl;
front();
返回容器中的第一个元素在deque<int> deq;
deq.insert(deq.begin(), 4, 12);
std::cout << deq.font() << std::endl;
back();
返回容器中最后一个元素在deque<int> deq;
deq.insert(deq.begin(), 4, 12);
std::cout << deq.back() << std::endl;
sort(iterator beg, iterator end);
对beg和end区间内的元素进行排序#include
#include
#include
#include
using namespace std;
void print(const deque<int>& deq)
{
//const_iterator
for (deque<int>::const_iterator it = deq.begin(); it != deq.end(); it++)
{
std::cout << *it << " ";
}
std::cout << std::endl;
}
int main()
{
srand((unsigned int)time(NULL));
deque<int> deq;
for (int i = 0; i < 10; i++)
{
int num = rand() % 60 + 40;
deq.push_back(num);
}
std::cout << "排序前:" << std::endl;
print(deq);
sort(deq.begin(), deq.end());
std::cout << "排序后:" << std::endl;
print(deq);
}