1、容器
容器放东西,东西要占用内存,所以要有分配器。
有一些操作在容器里面做,但是还有一部分在模板函数里面做,就是算法。
2、分配器
给容器分配内存。
3、算法
模板函数,要有东西把数据从容器里面传过来,于是有了迭代器。
4、迭代器
泛化的指针。
5、适配器
可以对容器、迭代器、仿函数做转换
6、仿函式
7、例程讲解
#include<vector>
#include<algorithm>
#include<functional>
#include<iostream>
int main()
{
int ia[6] = {24,32,32,54,25,23};
vector<int,allocator<int>>vi(ia,ia+6);
//分配器可以不写,但是会默认给出
//vi是对象,可以设置初值
cout << count_if(vi.begin(),vi.end(),not1(bind2nd(less<itn>(),40)));
//count_if()是一个算法,把头尾作为形参带入,
//less<int>(),40 找出小于40的数
}
六大部件在程序中的应用
复杂度介绍
迭代器的声明,在每个容器里面声明
.end()指向的是最后一个元素的后一位
C++11之后,语言简化了很多
for(decl:coll)
{
statement
}
decl是声明,coll是容器,下面是例子。
for(int i:{1,2,3,4,5,6,6,7})
{
std::cout << i << std::endl;
}
std::vector<double>vec;
...
for(auto elem:vec)
{
std::cout << elem << std::endl;
}
for(auto& elem : vec)
{
elem *= 3;
}
auto关键字可以简写迭代器,elem就是迭代器,功能上和上面定义的迭代器一样,同样,下面的取地址符是为了改变容器里面的元素,否则不会回返到它本身。