C++ Deque 容器
开发工具与关键技术:Visual Studio、C++
作者:张国军
撰写时间:2019年07月15日
deque 的数据存取
deque.at(idx);返回索引 idx 所指的数据,如果 idx 越界,抛出 out_of_range。
deque[idx];返回索引 idx 所指的数据,如果 idx 越界,不抛出异常, 直接出错。
deque.front();返回第一个数据。
deque.back();返回最后一个数据
#include <iostream>
#include <deque>
using namespace std;
template<class T>
void dequeshow(deque<T>& deq) {
for (int i = 0; i < deq.size(); i++)
{
cout<<deq[i]<<" ";
}
cout << endl;
}
void main()
{
deque<int> deqInt;
deqInt.push_back(1);
deqInt.push_back(3);
deqInt.push_back(5);
deqInt.push_back(7);
deqInt.push_back(9);
int iA = deqInt.at(0);
int iB = deqInt[1];
deqInt.at(0) = 99;
deqInt[1] = 88;
int iFront = deqInt.front();
int iBack = deqInt.back();
deqInt.front() = 77;
deqInt.back() = 66;
cout<<"deque.front(); 返回第一个数据:" << deqInt.front()<< endl;
cout << "deque.back(); 返回最后一个数据:" << deqInt.back() << endl;
dequeshow(deqInt);
}
deque 的大小
deque.size(); //返回容器中元素的个数 int 型变量
deque.empty(); //判断容器是否为空 返回 ture 和 false
deque.resize(num); //重新指定容器的长度为 num,若容器变长,则以默认值填充新位置。如果容器变短,则末尾超出容器长度的元素被删除。
deque.resize(num, elem); //重新指定容器的长度为 num,若容器变长,则以 elem 值填充新位置。如果容器变短,则末尾超出容器长度的元素被删除。
void main()
{
deque<int> deqInt;
deqInt.push_back(1);
deqInt.push_back(3);
deqInt.push_back(5);
int iSize = deqInt.size(); //3
cout << "deque.size():" << iSize<<endl;
if (!deqInt.empty())
{
cout << "deqInt.empty():不为空"<<endl;
deqInt.resize(5); //1 3 5 0 0
cout << "deqInt.resize(5):"<<endl;
dequeshow(deqInt);
deqInt.resize(7, 1); //1 3 5 0 0 1 1
cout << "deqInt.resize(7, 1):" << endl;
dequeshow(deqInt);
deqInt.resize(2); //1 3
cout << "deqInt.resize(2):" << endl;
dequeshow(deqInt);
}
}
deque 的删除
void main()
{
deque<int> deqInt;
deqInt.push_back(1);
deqInt.push_back(3);
deqInt.push_back(5);
deqInt.push_back(7);
deqInt.push_back(9);
deque<int>::iterator itBegin = deqInt.begin() + 1;
deque<int>::iterator itEnd = deqInt.begin() + 3;
dequeshow(deqInt);
deqInt.erase(itBegin, itEnd);
cout << "deqInt.erase(itBegin, itEnd);" << endl;
dequeshow(deqInt);
}