黑马:deque容器(204~209)

黑马:deque容器(204~209),第1张

黑马: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;
}




欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/3970193.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-10-21
下一篇 2022-10-21

发表评论

登录后才能评论

评论列表(0条)

保存