栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

黑马:deque容器(204~209)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

黑马:deque容器(204~209)

1.基本概念

功能:

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

deque与vector区别:

vector对于头部的删除效率较低,数据量越大,效率越低

deque相对而言,对头部的插入删除速度比vector快

vector访问元素时的速度会比deque快,这和两者内部实现有关

2.deque构造函数

#include
using namespace std;
#include
#include
#include
#include
#include
#include  //标准算法头文件
#include
#include
#include
#include
#include
#include


void printDeque(const deque& d) {  //加const
	for (deque::const_iterator it = d.begin(); it != d.end(); it++) { //我们既然想设置为只读,可以加const_
	//*it = 100;  防止修改数据
		cout << *it << " ";
	}
	cout << endl;
}

void test01() {
	deque d1;
	for (int i = 0; i < 10; i++) {
		d1.push_back(i);
	}
	printDeque(d1);

	dequed2(d1.begin(), d1.end());
	printDeque(d2);

	dequed3(10, 100);
	printDeque(d3);
	
	dequed4(d3);

}




int main(int argc,char**argv) {
		
	
	test01();
	
	system("pause");
	return  0;
}




3.deque赋值操作

#include
using namespace std;
#include
#include
#include
#include
#include
#include  //标准算法头文件
#include
#include
#include
#include
#include
#include


void printDeque(const deque& d) {  //加const
	for (deque::const_iterator it = d.begin(); it != d.end(); it++) { //我们既然想设置为只读,可以加const_
	//*it = 100;  防止修改数据
		cout << *it << " ";
	}
	cout << endl;
}

void test01() {
	deque d1;
	for (int i = 0; i < 10; i++) {
		d1.push_back(i);
	}
	printDeque(d1);

	//等号赋值
	dequed2;
	d2 = d1;
	printDeque(d2);

	//assign赋值
	dequed3;
	d3.assign(d1.begin(), d1.end());
	printDeque(d3);

	//n个elem方式
	dequed4;
	d4.assign(10, 100);
	printDeque(d4);



}




int main(int argc,char**argv) {
		
	
	test01();
	
	system("pause");
	return  0;
}




 

4.deque大小操作

#include
using namespace std;
#include
#include
#include
#include
#include
#include  //标准算法头文件
#include
#include
#include
#include
#include
#include


void printDeque(const deque& d) {  //加const
	for (deque::const_iterator it = d.begin(); it != d.end(); it++) { //我们既然想设置为只读,可以加const_
	//*it = 100;  防止修改数据
		cout << *it << " ";
	}
	cout << endl;
}

void test01() {
	deque 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()< 

5.deque插入和删除

#include
using namespace std;
#include
#include
#include
#include
#include
#include  //标准算法头文件
#include
#include
#include
#include
#include
#include


void printDeque(const deque& d) {  //加const
	for (deque::const_iterator it = d.begin(); it != d.end(); it++) { //我们既然想设置为只读,可以加const_
	//*it = 100;  防止修改数据
		cout << *it << " ";
	}
	cout << endl;
}

void test01() {
	deque d1;
	
	//尾插
	d1.push_back(10);
	d1.push_back(20);

	//头插
	d1.push_front(100);
	d1.push_front(200);

	// 100 200 10 20
	printDeque(d1);
	
	//尾删
	d1.pop_back(); //删掉20
	printDeque(d1);

	//头删
	d1.pop_front();//删掉100
	printDeque(d1);

}



void test02() {
	dequed1;

	d1.push_back(10);
	d1.push_back(20);
	d1.push_front(100);
	d1.push_front(200);
	printDeque(d1);

	//insert插入
	d1.insert(d1.begin(), 1000);
	printDeque(d1);

	d1.insert(d1.begin(), 2,1000);
	printDeque(d1);

	//按照区间插入
	dequed2;
	d2.push_back(1);
	d2.push_back(2);
	d2.push_back(3);

	d1.insert(d1.begin(), d2.begin(), d2.end());
	printDeque(d1);

}

void test03() {
	dequed1;

	d1.push_back(10);
	d1.push_back(20);
	d1.push_front(100);
	d1.push_front(200);
	printDeque(d1); 

	//删除
	deque::iterator it = d1.begin();
	it++; //让迭代器往后偏移一位
	d1.erase(it); //删掉20
	printDeque(d1);

	//按区间方式删除
	d1.erase(d1.begin(),d1.end());
	printDeque(d1);

	//清空
	d1.clear();
	printDeque(d1);
}


int main(int argc,char**argv) {
		
	
	//test01();
	//test02();
	test03();
	
	system("pause");
	return  0;
}




6.deque数据存取

#include
using namespace std;
#include
#include
#include
#include
#include
#include  //标准算法头文件
#include
#include
#include
#include
#include
#include


void printDeque(const deque& d) {  //加const
	for (deque::const_iterator it = d.begin(); it != d.end(); it++) { //我们既然想设置为只读,可以加const_
	//*it = 100;  防止修改数据
		cout << *it << " ";
	}
	cout << endl;
}

void test01() {
	deque d1;
	
	d1.push_back(10);
	d1.push_back(20);
	d1.push_back(30);

	d1.push_front(100);
	d1.push_front(200);
	d1.push_front(300);


	//通过[]方式访问元素
	for (int i = 0; i < d1.size(); i++) {
		cout << d1[i] << " ";
	}
	cout << endl;

	//通过at方式访问元素
	for (int i = 0; i < d1.size(); i++) {
		cout << d1.at(i)<< " ";
	}
	cout << endl;

	cout << "第一个元素:" << d1.front() << endl;
	cout << "最后一个元素:" << d1.back() << endl;
}




int main(int argc,char**argv) {
		
	
	test01();
	
	system("pause");
	return  0;
}




7.deque排序

#include
using namespace std;
#include
#include
#include
#include
#include
#include  //标准算法头文件
#include
#include
#include
#include
#include
#include


void printDeque(const deque& d) {  //加const
	for (deque::const_iterator it = d.begin(); it != d.end(); it++) { //我们既然想设置为只读,可以加const_
	//*it = 100;  防止修改数据
		cout << *it << " ";
	}
	cout << endl;
}

void test01() {
	deque d1;
	
	d1.push_back(10);
	d1.push_back(20);
	d1.push_back(30);

	d1.push_front(100);
	d1.push_front(200);
	d1.push_front(300);

	printDeque(d1);

	//排序 默认为从小到大排序
	//对于支持随机访问的迭代器都可以使用sort对其排序
	//vector也可以用sort
	sort(d1.begin(), d1.end());
	printDeque(d1);


}




int main(int argc,char**argv) {
		
	
	test01();
	
	system("pause");
	return  0;
}




转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/330307.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号