您的位置:首页 > 房产 > 家装 > 测试开发工程师前景_wordpress建站系统_企业员工培训内容及计划_中国企业网络营销现状

测试开发工程师前景_wordpress建站系统_企业员工培训内容及计划_中国企业网络营销现状

2025/5/9 16:39:08 来源:https://blog.csdn.net/qq_45827638/article/details/146381544  浏览:    关键词:测试开发工程师前景_wordpress建站系统_企业员工培训内容及计划_中国企业网络营销现状
测试开发工程师前景_wordpress建站系统_企业员工培训内容及计划_中国企业网络营销现状

deque概念

双端数组,可以对头端进行插入删除操作

deque和vector差别(就像数据结构中的栈和队列)

vector对于头部的插入删除效率低,而deque则相对高效

vector和deque都支持随机访问,但是vector的随机访问效率低,而deque则相对高效

vector和deque都支持迭代器,但是vector的迭代器效率低,而deque则相对高效

deque相对而言,对头部的插入删除操作会比vector快

 

deque内部工作原理

deque内部有个中控器,维护每段缓冲区的内容,缓冲区存放真实数据

中控器维护的是每个缓冲区的地址,使得deque像一片连续的内存空间

deque构造函数

deque<T>deqT;// 默认构造函数,创建一个空的deque

deque(beg,end);// 构造函数,创建一个区间[beg,end)区间的元素拷贝给本身

deque(n,elm);// 构造函数,创建一个长度为n的deque,每个元素都为elm

deque(const deque &deq);// 构造函数,创建一个deque的拷贝

#include <iostream>
#include <deque>
using namespace std;void printDeque(const deque<int> &d){for(deque<int>::const_iterator it=d.begin();it!=d.end();it++){cout<<*it<<" ";}cout<<endl;
}void test(){deque<int> d;for(int i=0;i<10;i++){d.push_back(i);}printDeque(d);deque<int> d2(d.begin(),d.end());printDeque(d2);deque<int> d3(10,100);printDeque(d3);deque<int> d4=d3;printDeque(d4);
}int main()
{test();system("pause");return 0;
}

基本语法和vector类似

deque赋值操作

deque& operator=(const deque &deq);//重载等号操作符

assign(beg, end);//将[beg, end)区间中的数据拷贝赋值给本身。

assign(n, elem);//将n个elem拷贝赋值给本身。

、#include <iostream>
#include <deque>using namespace std;void printDeque(const deque<int> &d)
{for (deque<int>::const_iterator it = d.begin(); it != d.end(); it++){cout << *it << " ";}cout << endl;
}void test(){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()
{test();system("pause");return 0;
}

deque大小操作 

deque.empty();// 判断deque是否为空

deque.size();// 返回deque元素个数

deque.resize(num);// 调整deque元素个数,若小于num,则用默认值补充,若大于num,则删除末尾元素

deque.resize(num,value);// 调整deque元素个数,若小于num,则用value补充,若大于num,则删除末尾元素

deque.max_size();// 返回deque可容纳的最大元素个数

deque.clear();// 清空deque

#include <iostream>
#include <deque>using namespace std;void printDeque(const deque<int> &d)
{for (deque<int>::const_iterator it = d.begin(); it != d.end(); it++){cout << *it << " ";}cout << endl;
}void test(){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的大小为:" << d1.size() << endl;}d1.resize(15,10);printDeque(d1);d1.resize(20);printDeque(d1);
}int main()
{test();system("pause");return 0;
}

deque插入和删除

push_back(elm);// 在队尾插入元素elm

push_frony(elm);// 在队首插入元素elm

pop_back();// 删除队尾元素

pop_front();// 删除队首元素

insert(pos,elm);// 在pos位置插入元素elm,返回新数据的位置

insert(pos,n,elm);// 在pos位置插入n个元素elm,无返回值

insert(pos,beg,end);// 在pos位置插入[beg,end)区间内的所有元素,无返回值

clear();// 清空deque

erase(beg,end);// 删除[beg,end)区间内的所有元素,返回删除区间最后一个元素的下一个位置

erase(pos);// 删除pos位置的元素,返回删除元素的下一个位置

#include <iostream>
#include <deque>using namespace std;void printDeque(const deque<int> &d)
{for (deque<int>::const_iterator it = d.begin(); it != d.end(); it++){cout << *it << " ";}cout << endl;
}void test(){deque<int> d1;d1.push_back(10);d1.push_back(20);printDeque(d1);// 10 20d1.push_front(30);d1.push_front(40);printDeque(d1);// 40 30 10 20d1.pop_back();printDeque(d1);// 40 30 10d1.pop_front();printDeque(d1);// 30 10
}
int main()
{test();system("pause");return 0;
}

deque数据存取

at(int idx);//访问索引idx的元素,如果越界,则抛出异常

operator[](int idx);//访问索引idx的元素,如果越界,则返回0

front();//访问第一个元素

back();//访问最后一个元素

#include <iostream>
#include <deque>using namespace std;void printDeque(deque<int>& d){for(deque<int>::const_iterator it=d.begin();it!=d.end();it++){cout<<*it<<endl;}cout<<endl;
}void test(){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()
{test();system("pause");return 0;
}

deque排序

sort(iterator beg, iterator end) //对beg和end区间内元素进行排序

#include <iostream>
#include <deque>
#include<algorithm>using namespace std;void printDeque(deque<int>& d){for(deque<int>::iterator it=d.begin();it!=d.end();it++){cout<<*it<<" ";}cout<<endl;
}void test(){deque<int> d;d.push_back(10);d.push_back(20);d.push_front(100);d.push_front(200);printDeque(d);//200 100 10 20sort(d.begin(),d.end());printDeque(d);//10 20 100 200
}int main()
{test();system("pause");return 0;
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com