C++11——STL的变化

1. 新增容器

1.1 array

array: 使用C++去封装的一个静态数组,用的是非类型模板参数,符合迭代器的规范,可以使用范围for来访问

 

array真正的价值:
C语言有一个问题,没有办法进行严格的边界检查,它是一个抽查
而array的 operator[] 可以进行检查,读写都可以

代码:

int main()
{

	array<int, 10> a1;

	//a1[10]; //越界了,程序执行之后会直接检查出来   

	//array是为了对标C语言的原生数组,它的优点就是检查很严格

	//但实际上使用vector更方便
	vector<int> v(10, 0);   //而且这里会初始化,   array<int,10> a1; 不会初始化

	//所以实践中array没有太多价值

	//array的对象所占空间是开在栈上的
	//vector是开在堆上的
	cout << sizeof(a1) << endl;  //随着非类型模板参数的变化而变化
	cout << sizeof(v) << endl;  //恒为16



	return 0;
}

1.2 forward_list

forward_list:单向链表

优点:节省空间,每个节点中会少存储一个指针
但是只适合头插、头删

插入和删除操作都是打折实现的:

代码示例:

int main()
{
	forward_list<int> fl;

	fl.push_front(1);
	fl.push_front(8);
	fl.push_front(10);

	return 0;
}

1.3 哈希表

哈希表是新增的很有用的容器,效率相比map和set会高上一些,在其他博客中介绍过,这里就不介绍了。

2. 新增的容器成员函数

基本每个容器中都增加了一些C++11的新函数,但是其实大多都是用得比较少的。
比如提供了cbegin和cend函数返回const迭代器等等,实际意义不大,因为begin和end也是可以返回const迭代器的,这些都是属于锦上添花的操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值