c++容器deque的常见接口

deque的4种构造方式

#include<iostream>
#include<string>
using namespace std;
#include<deque>
#include<algorithm>
/*deque的4种构造方式
deque<int> d;//无参构造
deque<int> d1(d.begin(), d.end());//有参构造,将区间[begin,end)中的元素构造到deque中
deque<int> d2(const deque &d);//拷贝构造函数
deque<int> d3(10, 100);//有参构造,将10个100构造到deque中
*/
void print(int& a) {
	cout << a << " ";
}
void test() {
	deque<int> d;
	for (int i = 0; i < 6; i++) {
		d.push_back(i);
	}

	deque<int> d1(d.begin(), d.end());

	deque<int> d2(d);

	deque<int> d3(10, 100);
	
	for_each(d.begin(),d.end(),print);
	cout << endl;

	for (deque<int>::const_iterator it = d.begin(); it < d.end(); it++) {
		cout << *it << " ";
	}
}

int main() {
	test();
	return 0;
}

deque的大小

#include<iostream>
#include<string>
using namespace std;
#include<deque>
#include<algorithm>
/*deque的大小,deque没有容量的概念
empty();判断是否为空
size();返回deque的大小
resize(int num,T elem = 0)重置deque的大小
*/
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 < 6; i++)
	{
		d.push_back(i);
	}
	printDeque(d);
	cout << d.size();
	d.resize(10);//默认值填充,默认值为0
	printDeque(d);
	cout << d.size();
	d.resize(11, 1);
	printDeque(d);
	cout << d.size();
	cout << d.empty();
	
}

int main() {
	test();
	return 0;
}

deque的插入和删除

#include<iostream>
#include<string>
using namespace std;
#include<deque>
#include<algorithm>
/*deque的插入和删除
d.push_back(10);//尾插
d.push_front(10);首插
d.pop_back();尾删
d.pop_front();首删
d.insert(d.begin()+1, 10);在d.begin()+1处插入10
d.insert(d.begin() + 1, 10,12);在d.begin()+1处插入10个12
d.insert(d.begin(), d.begin()+1, d.end()-1);在d.begin()插入【 d.begin()+1, d.end()-1)中的元素
d.erase(d.begin());删除d.begin()处的元素
d.erase(d.begin(), d.begin() + 2);删除【d.begin(), d.begin() + 2)中的元素
d.clear();清空
*/
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 < 6; i++)
	{
		d.push_back(i);
	}
	d.push_back(10);
	d.push_front(10);
	printDeque(d);
	d.pop_back();
	d.pop_front();
	printDeque(d);
	d.insert(d.begin()+1, 10); printDeque(d);
	d.insert(d.begin() + 1, 2,12); printDeque(d);
	d.insert(d.begin(), d.begin()+1, d.end()-1); printDeque(d);
	d.erase(d.begin()); printDeque(d);
	d.erase(d.begin(), d.begin() + 1); printDeque(d);
	d.clear(); printDeque(d);

	
}

int main() {
	test();
	return 0;
}

deque的查询

#include<iostream>
#include<string>
using namespace std;
#include<deque>
#include<algorithm>
/*deque的查询
operator=[]下标访问
at(int index);返回下标为index的元素
back();返回最后一个元素
front();返回第一个元素
*/
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 < 6; i++)
	{
		d.push_back(i);
	}
	d[0] = 100;
	cout << d.at(0);
	d.back()=13;
	d.front()=13;
	printDeque(d);

	
}

int main() {
	test();
	return 0;
}

函数sort

#include<iostream>
#include<string>
using namespace std;
#include<deque>
#include<algorithm>
/*deque的排序
sort(d.begin(), d.end());从小到大排序
*/
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 < 6; i++)
	{
		d.push_back(i);
	}
	d[0] = 100;
	cout << d.at(0);
	d.back()=13;
	d.front()=13;
	printDeque(d);
	sort(d.begin(), d.end());
	printDeque(d);
	
}

int main() {
	test();
	return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
dequeC++标准库中的一种容器,它是双端队列的意思。双端队列是一种可以从队列的前端和后端进行插入和删除操作的数据结构。在C++中,deque可以存储任意类型的数据,并且支持动态大小调整。deque中的元素可以通过普通迭代器、常量迭代器和逆转迭代器进行访问。 在deque中,元素的添加和删除操作可以在队列的前端和后端进行,并且插入和删除的时间复杂度都是O(1)。 在C++11中,可以使用emplace_back和emplace_front函数来在deque的尾部和头部插入元素,这些函数可以直接在已有的元素上构造对象,而不需要进行拷贝或移动操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [C++ Deque的使用](https://blog.csdn.net/weixin_42587961/article/details/100305841)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [deque容器](https://blog.csdn.net/m0_46376834/article/details/117335026)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值