STL标准模板库

STL

	可重复运用的东西 从函数  类 函数库  类别库
各种组件 从模块设计到面向对象位的就是复用性的提升。
	STL时一个数据结构和算法的标准  减低了他们的耦合性
从而提升可自己的独立性,弹性,交互操作性

STL广义分为 容器 算法 迭代器 (桥梁)
容器和算法之间通过迭代器无缝连接

STL六大组件

容器  算法  迭代器  仿函数  适配器  空间配置器
容器 如:vector list deque set mao 用来存放数据   实现的角度位 class template(类模板)
算法 sort  find copy   for each
迭代器  容器与算法的胶合剂   类似与指针
仿函数 行为类似函数  仿函数是一种重载了operator()的class或者class template();
适配器   用来修饰容器或者仿函数或迭代器接口的东西(扩展口)
空间配置器  负责空 间的配置和管理  实现了动态分配

容器通过空间配置器存储数据 算法通过迭代器存储容器的内容 仿函数可以协助算法完成不同1的策略变化 适配器可以修饰仿函数

优点

 数据与算法分离  内嵌在编译器内
 高可重用性(模板)  高性能(map  红黑树)   高移值性

容器

序列式容器 容器中的每个元素都有固定的位置

关联式容器(非线性的数组结构 ) 准确的说是二叉树 各元素之间没有严格的物理顺序关系 关联式容器有一个显著的特点(在值中选择一个值作为关键字key 这个关键字对值起到索引的作用 方便查找)(set/multiset、map/multimap容器)

算法

质变算法是指运算过程中会更改区间元素的内容 如拷贝 替换 删除等
非质变算法 是指运算过程中不会更改区间的元素内容 例如 查找 技术 遍历 寻找极值等等

迭代器

看作一个指针 可以依序询问每个容器所含的各个元素(遍历 )

输入迭代器提供数据的只读访问只读 支持++ ,== ,!=
输出迭代器提供数据的只写访问只写 支持++
前向迭代器提供读写操作,并能向前推送迭代器读写支持++,==,!=
双向迭代器提供读写操作 并能先前先后操作读写支持++,–
随机访问迭代器提供读写操作,并能一跳跃的方式访问容器的任意数据,是功能最强的迭代器读写支持++,–,[n],-n,<.<=,>,>=

迭代器 遍历功能

普通指针就是一种指针
void test()
{
	int arry[5] = {1,2,3,4,5};
	int * p = arry; 
	for(int i =0;i< 5;i++)
	{
		cout<<*(p++)<<endl;
	}
}

容器

void myprintf(int v)
{
	cout<<v<<endl;
}
void test()
{
	//声明一个容器   里面放int数据对象名称为V   需要包含头文件vector
	vector<int>v;
	//放入数据
	v.push_back(10);
	v.push_back(20);
	v.push_back(30);

	//遍历  
	//声明迭代器
	vector<int>::iterator itbegin = v.begin();   //迭代器指向了容器的开始
	vector<int>::iterator itend = v.end();   //迭代器指向了容器的结尾
	while(itbegin !=itend )
	{
		cout<<*itbegin++<<endl;
	}
//	for(vector<int>::iterator itbegin = v.begin();itbegin !=v.end();itbegin ++)
//	{
//		cout<<*itbegin<<endl;
//	}
	

	//利用算法  需要包含头文件algorithm
	for_each(v.begin(),v.end(),myprintf);//需要回调函数

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值