1009deque容器

69 阅读1分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第26天,点击查看活动详情

1.deque大小操作概述

功能描述:

  • 对deque容器的大小进行操作

函数原型:

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

  • deque.size(); //返回容器中元素的个数

  • deque.resize(num); //重新指定容器的长度为num,若容器变长,则以默认值填充新位置。

    ​ //如果容器变短,则末尾超出容器长度的元素被删除。

  • deque.resize(num, elem); //重新指定容器的长度为num,若容器变长,则以elem值填充新位置。

    ​ //如果容器变短,则末尾超出容器长度的元素被删除。

2.代码举例说明

#include <deque>

void printDeque(const deque<int>& h) 
{
	for (deque<int>::const_iterator it = h.begin(); it != h.end(); it++) {
		cout << *it << " ";

	}
	cout << endl;
}

//大小操作
void test01()
{
	deque<int> h01;
	for (int i = 0; i < 10; i++)
	{
		h01.push_back(i);
	}
	printDeque(h01);

	//判断容器是否为空
	if (h01.empty()) {
		cout << "h01为空!" << endl;
	}
	else {
		cout << "h01不为空!" << endl;
		//统计大小
		cout << "h01的大小为:" << h01.size() << endl;
	}

	//重新指定大小
	h01.resize(15, 1);
	printDeque(h01);

	h01.resize(5);
	printDeque(h01);
}

int main() {

	test01();

	system("pause");

	return 0;
}

结论:

  • deque没有容量的概念
  • 判断是否为空 --- empty
  • 返回元素个数 --- size
  • 重新指定个数 --- resize

3. deque 插入和删除概述

功能描述:

  • 向deque容器中插入和删除数据

函数原型:

两端插入操作:

  • 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位置的数据,返回下一个数据的位置。

4.代码举例说明

#include <deque>

void printDeque(const deque<int>& h) 
{
	for (deque<int>::const_iterator it = h.begin(); it != h.end(); it++) {
		cout << *it << " ";

	}
	cout << endl;
}
//两端操作
void H01()
{
	deque<int> h;
	//尾插
	h.push_back(10);
	h.push_back(20);
	//头插
	h.push_front(100);
	h.push_front(200);

	printDeque(h);

	//尾删
	h.pop_back();
	//头删
	h.pop_front();
	printDeque(h);
}

//插入
void H02()
{
	deque<int> h;
	h.push_back(10);
	h.push_back(20);
	h.push_front(100);
	h.push_front(200);
	printDeque(h);

	h.insert(h.begin(), 1000);
	printDeque(h);

	h.insert(h.begin(), 2,10000);
	printDeque(h);

	deque<int>h02;
	h02.push_back(1);
	h02.push_back(2);
	h02.push_back(3);

	h.insert(h.begin(), h02.begin(),h02.end());
	printDeque(h);

}

//删除
void H03()
{
	deque<int> h;
	h.push_back(10);
	h.push_back(20);
	h.push_front(100);
	h.push_front(200);
	printDeque(h);

	h.erase(h.begin());
	printDeque(h);

	h.erase(h.begin(), h.end());
	h.clear();
	printDeque(h);
}

int main() {

	//H01();

	//H02();

    H03();
    
	system("pause");

	return 0;
}

结论:

  • 插入和删除提供的位置是迭代器!
  • 尾插 --- push_back
  • 尾删 --- pop_back
  • 头插 --- push_front
  • 头删 --- pop_front