C++———STL(SGI版本)

什么是STL?

STL (standard template libaray-标准模板库):是C++标准库的重要组成部分,不仅是一个可复用的组件库,更是一个包罗数据结构与算法的软件框架。
STL包含六大组件:容器、仿函数、算法、迭代器、空间配置器、配接器。
STL是C++中的优秀作品,有了它的陪伴,许多底层的数据结构以及算法都不需要自己重新造轮子,站在前人的肩膀上,健步如飞的快速开发。

迭代器(itorator)

是一种设计模式(元素访问的一种设计模式),所有容器都需要遵循相同的设计规范。好处就在于每个容器的迭代器使用规范都是一样的。例如usb接口,虽然生产厂家不一样但都可以通用,因为是一个设计模式。
迭代器使用与指针类似
设计模式
正向
begin迭代器:指向第一个元素的位置
end迭代器:指向最后一个元素的下一位置
反向
rbegin迭代器:指向最后一个元素的位置
rend迭代器:指向第一个元素的前一个位置
支持通过*和—>解引用来访问数据
支持++/–操作移动元素位置
支持!= 判断元素
分为const(可读)和非const(可读可写)

   string s2 = "123456";
   //获取到迭代器
	string::iterator it = s2.begin();
	for(; it!=s2.end(); it++){
   
		cout << *it << " ";  
		*it='a';//通过迭代器对内容进行修改 
	}
	//反向输出
	string s3 = "abcdef";
	string::reverse_iterator rit = s3.rbegin();
	for (; rit != s3.rend(); rit++){
   //++是反向的 向前移动
		cout << *rit << " ";
	}
	

支持迭代器访问的自定义类型都可以使用范围for
之前学过对于范围确定的序列可以用范围for来遍历(如数组),其实范围for就是基于迭代器实现的,如果这个类当中有迭代器,就可以使用范围for。

    string s = "abcdef";
	int arr[] = {
    1, 2, 3, 4, 5 };
	for (const auto& e : arr){
   
		cout << e << " ";
    }
	cout <<
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值