C++ STL标准库:std::deque 查询元素个数size() max_size() 重设大小resize() 使用实例

std::deque::size

函数原型:

size_type size() const noexcept;

返回双端队列容器中的元素数。

参数:

返回值:
容器中的元素数。

成员类型size_type是无符号整数类型。


std::deque::max_size

函数原型:

size_type max_size() const noexcept;

返回双端队列容器可以容纳的最大元素数。

由于已知的系统或库实现限制,这是容器可以达到的最大潜在大小,但是绝不能保证容器能够达到该大小:在达到该大小之前,它仍然无法在任何时候分配存储 。

参数:

返回值:
双端队列容器可以容纳的最大元素数。

成员类型size_type是无符号整数类型。


std::deque::resize

函数原型:

void resize (size_type n);
void resize (size_type n, const value_type& val);

简介:
调整容器的大小,使其包含n个元素。

如果n小于当前容器的大小,则将内容减少到其前n个元素,并删除超出范围的元素(并销毁它们)。

如果n大于当前容器的大小,则通过在末尾插入任意数量的元素以达到n的大小来扩展内容。 如果指定了val,则将新元素初始化为val的副本,否则,将对它们进行值初始化。

请注意,此函数通过插入或擦除容器中的元素来更改容器的实际内容。

参数:
n:
新的容器大小,以元素数表示。

成员类型size_type是无符号整数类型。

val:
如果n大于当前容器的大小,则将其内容复制到添加的元素的对象。

如果未指定,则使用默认构造函数。

成员类型value_type是容器中元素的类型,在deque中定义为第一个模板参数(T)的别名。

返回值:

如果增长,则使用容器的分配器分配新元素的存储,这可能会在失败时引发异常(对于默认分配器,如果分配请求未成功,则抛出bad_alloc)。


#include <iostream>
#include <deque>
#include <algorithm>

using namespace std;

void Print(int& Ele)
{
	cout<<Ele<<" ";
}

void main()
{
	// 初始化 D1,D2,D3,D31,D4,D5
	deque<int>D1;		// D1为空
	deque<int>D2(5);	// D2:5个0
	deque<int>D3(10,2),D31(10,3);	// D3:10个2 D31:10个3
	deque<int>D4(D3);	// D4:和D3一样
	deque<int>D5(D31.begin(),D31.end());	// D5:和D31一样

	// 依次打印 D1,D2,D3,D31,D4,D5
	cout<<"D1:"<<endl;
	for_each(D1.begin(),D1.end(),Print);
	cout<<endl;
	cout<<"D2:"<<endl;
	for_each(D2.begin(),D2.end(),Print);
	cout<<endl;
	cout<<"D3:"<<endl;
	for_each(D3.begin(),D3.end(),Print);
	cout<<endl;
	cout<<"D31:"<<endl;
	for_each(D31.begin(),D31.end(),Print);
	cout<<endl;
	cout<<"D4:"<<endl;
	for_each(D4.begin(),D4.end(),Print);
	cout<<endl;
	cout<<"D5:"<<endl;
	for_each(D5.begin(),D5.end(),Print);
	cout<<endl;

	///
	int size=D2.size();
	cout<<"D2大小为: "<<size<<endl;

	int Msize=D2.max_size();
	cout<<"D2允许最大大小为: "<<Msize<<endl;

	D31.resize(5,'A');
	cout<<"D31:"<<endl;
	for_each(D31.begin(),D31.end(),Print);
	cout<<endl;

	D31.resize(7,0);
	cout<<"D31:"<<endl;
	for_each(D31.begin(),D31.end(),Print);
	cout<<endl;
}

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

超级D洋葱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值