3.3.2 deque构造函数
功能描述:
- deque容器构造
 
函数原型:
- deque
deqT; //默认构造形式  - deque(beg, end); //构造函数将[beg, end)区间中的元素拷贝给本身。
 - deque(n, elem); //构造函数将n个elem拷贝给本身。
 - deque(const deque &deq); //拷贝构造函数
 
示例:
#include <deque>void printDeque(const deque<int>& d){for (deque<int>::const_iterator it = d.begin(); it != d.end(); it++) {cout << *it << " ";}cout << endl;}//deque构造void test01() {deque<int> d1; //无参构造函数for (int i = 0; i < 10; i++){d1.push_back(i);}printDeque(d1);deque<int> d2(d1.begin(),d1.end());printDeque(d2);deque<int>d3(10,100);printDeque(d3);deque<int>d4 = d3;printDeque(d4);}int main() {test01();system("pause");return 0;}
总结:deque容器和vector容器的构造方式几乎一致,灵活使用即可
3.3.3 deque赋值操作
功能描述:
- 给deque容器进行赋值
 
函数原型:
- deque& operator=(const deque &deq); //重载等号操作符
 - assign(beg, end); //将[beg, end)区间中的数据拷贝赋值给本身。
 - assign(n, elem); //将n个elem拷贝赋值给本身。
 
示例:
#include <deque>void printDeque(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;for (int i = 0; i < 10; i++){d1.push_back(i);}printDeque(d1);deque<int>d2;d2 = d1;printDeque(d2);deque<int>d3;d3.assign(d1.begin(), d1.end());printDeque(d3);deque<int>d4;d4.assign(10, 100);printDeque(d4);}int main() {test01();system("pause");return 0;}
3.3.4 deque大小操作
功能描述:
- 对deque容器的大小进行操作
 
函数原型:
- deque.empty(); //判断容器是否为空
 - deque.size(); //返回容器中元素的个数
 - deque.resize(num); //重新指定容器的长度为num,若容器变长,则以默认值填充新位置。 //如果容器变短,则末尾超出容器长度的元素被删除。
 - deque.resize(num, elem); //重新指定容器的长度为num,若容器变长,则以elem值填充新位置。//如果容器变短,则末尾超出容器长度的元素被删除。
 
示例:
#include <deque>void printDeque(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;for (int i = 0; i < 10; i++){d1.push_back(i);}printDeque(d1);//判断容器是否为空if (d1.empty()) {cout << "d1为空!" << endl;}else {cout << "d1不为空!" << endl;//统计大小cout << "d1的大小为:" << d1.size() << endl;}//重新指定大小d1.resize(15, 1);printDeque(d1);d1.resize(5);printDeque(d1);}int main() {test01();system("pause");return 0;}
总结:
函数原型:
两端插入操作:
- push_back(elem); //在容器尾部添加一个数据
 - push_front(elem); //在容器头部插入一个数据
 - pop_back(); //删除容器最后一个数据
 - pop_front(); //删除容器第一个数据
 
指定位置操作:
- insert(pos,elem); //在pos位置插入一个elem元素的拷贝,返回新数据的位置。
 - insert(pos,n,elem); //在pos位置插入n个elem数据,无返回值。
 - insert(pos,beg,end); //在pos位置插入[beg,end)区间的数据,无返回值。
 - clear(); //清空容器的所有数据
 - erase(beg,end); //删除[beg,end)区间的数据,返回下一个数据的位置。
 - erase(pos); //删除pos位置的数据,返回下一个数据的位置。
 
示例:
#include <deque>void printDeque(const deque<int>& d){for (deque<int>::const_iterator it = d.begin(); it != d.end(); it++) {cout << *it << " ";}cout << endl;}//两端操作void test01(){deque<int> d;//尾插d.push_back(10);d.push_back(20);//头插d.push_front(100);d.push_front(200);printDeque(d);//尾删d.pop_back();//头删d.pop_front();printDeque(d);}//插入void test02(){deque<int> d;d.push_back(10);d.push_back(20);d.push_front(100);d.push_front(200);printDeque(d);d.insert(d.begin(), 1000);printDeque(d);d.insert(d.begin(), 2,10000);printDeque(d);deque<int>d2;d2.push_back(1);d2.push_back(2);d2.push_back(3);d.insert(d.begin(), d2.begin(), d2.end());printDeque(d);}//删除void test03(){deque<int> d;d.push_back(10);d.push_back(20);d.push_front(100);d.push_front(200);printDeque(d);d.erase(d.begin());printDeque(d);d.erase(d.begin(), d.end());d.clear();printDeque(d);}int main() {//test01();//test02();test03();system("pause");return 0;}
总结:
函数原型:
- at(int idx); //返回索引idx所指的数据
 - operator[]; //返回索引idx所指的数据
 - front(); //返回容器中第一个数据元素
 - back(); //返回容器中最后一个数据元素
 
示例:
#include <deque>void printDeque(const deque<int>& d){for (deque<int>::const_iterator it = d.begin(); it != d.end(); it++) {cout << *it << " ";}cout << endl;}//数据存取void test01(){deque<int> d;d.push_back(10);d.push_back(20);d.push_front(100);d.push_front(200);for (int i = 0; i < d.size(); i++) {cout << d[i] << " ";}cout << endl;for (int i = 0; i < d.size(); i++) {cout << d.at(i) << " ";}cout << endl;cout << "front:" << d.front() << endl;cout << "back:" << d.back() << endl;}int main() {test01();system("pause");return 0;}
总结:
算法:
- sort(iterator beg, iterator end) //对beg和end区间内元素进行排序
 
示例:
#include <deque>#include <algorithm>void printDeque(const deque<int>& d){for (deque<int>::const_iterator it = d.begin(); it != d.end(); it++) {cout << *it << " ";}cout << endl;}void test01(){deque<int> d;d.push_back(10);d.push_back(20);d.push_front(100);d.push_front(200);printDeque(d);sort(d.begin(), d.end());printDeque(d);}int main() {test01();system("pause");return 0;}
总结:sort算法非常实用,使用时包含头文件 algorithm即可
