第一讲:STL Application

一、STL六大部件(components)
C++标准库把非常重要的算法和数据结构都包含在内。
容器要放东西,东西要分配内存。容器是一个模板类,需要操作容器里存的东西。数据在容器中,但是操作数据的算法在别的地方,从而容器与算法分离,这与类中将数据与操作都放在类中所不同。
迭代器就是一种泛化的指针(就把他看做指针)。仿函数有个仿字,说明就是看起来像个函数。
理解:我有1斤苹果,通过分配器(分配苹果的)分配一个篮子只(容器),通过放苹果算法将苹果根据篮子的地址(迭代器)t通过我的手(函数适配器)放每一个苹果。
注:也可以用我的手拿夹子拿苹果去实现放苹果算法,于是这里就有两个仿函数适配器
篮子<苹果,分配器<苹果>> 篮子的名字(basket);
放算法(basket的首格,basket尾格,手(夹子(函数(不选烂苹果),苹果条件(烂苹果))))

int apple[6] = {1,0,1,1,1,0};//1,0分别表示为好和坏苹果
vector<int,allocator<int>> basket(apple,apple+6};
	cout<<cout_if(basket.begin(),basket.end(),nol(bind2nd(greater<int>,0));
Q1:我有这么多的容器,那么就会面临选择什么容器?
A1:要根据实际情况选择容器,在选择的时候需要考虑复杂度(Big-oh)

容器([    )“前闭后开”区间),容器不一定是连续的内存空间,可能是一个链表,hashtable等等。

新版本好东西:
for(decl : coll){//coll为任何一个容器,decl 为取容器中的变量
statement
}
例子:

std::vector<double> vec;
for(auto elem:vec)
	std::cout<<elem<<std::endl;
for (auto& elem)
	elem *= 3;//用了引用再能改变传入的地址中的值

还有一种:
list::iterator ite;
ite = ::find(c.begin(),c.end(),traget);
改为:auto ite = ::find(c.begin(),c.end(),traget);//直接用auto根据右值中的c直接识别处理ite为与c容器同模板类别的迭代器。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值