一、六大部件
》容器(Containers)
》分配器(Allocators)
》算法(Algorithm)
》迭代器(Iterators)
》适配器(Adapters)
》仿函式(Functors)
代码 ------- 简单实现6种部件的代码
#include <iostream>
#include <vector>
#include <functional>
#include <algorithm>
using namespace std;
int main() {
int a[6] = {27 , 210 , 40 , 12 , 47 , 92};
/*
allocator<int> 是 分配器 但是通常vector有
默认的分配器 所以通常省略
========= 分配器
*/
/*vector ======= 容器*/
vector<int,allocator<int> > vi(a , a + 6);//此时vi 得到了 a[0] - a[1]的值
//count_if 是 计量函数 计算符合标准的元素有几个 ========= 算法
//范围是 vi.begin()-----vi.end() ======== 迭代器
//bind2nd(less<int>() , 40) --- 小于40的元素 ========= 仿函式 + 适配器
//not1() ---- 否定作用 ========= 仿函式 + 适配器
cout << count_if(vi.begin(),vi.end(),
not1(bind2nd(less<int>(), 40))) << endl;//不小于四十的数量 ---> 大于等于四十的数量 ----> 4
return 0;
}
运行的截图
二、容器
#include <iostream>
#include <vector>
using namespace std;
int main(int argc, char const *argv[]) {
vector<int> c;
//向容器中增加元素
c.push_back(0);
c.push_back(1);
c.push_back(2);
c.push_back(3);
c.push_back(4);
// 让迭代器一开始指到容器的起始位置
//c.begin()指的位置是第一个元素位置 c.end()指的是最后一个元素的下一个位置
vector<int>::iterator ite = c.begin();
//通过游标来循环查看容器元素
for(;ite != c.end();ite++)
cout << *ite << " ";
return 0;
}
运行的结果:0 1 2 3 4
三、C++的特殊迭代器
#include <bits/stdC++.h>
using namespace std;
int main() {
//按照 2-9-3-7-5的顺序遍历
for(int i : { 2 , 9 , 3 , 7 , 5 })
cout << i << " ";
cout << endl;
int a[6] = {1,2,3,4,5,6};
for(int i : { 2 , 6 , 3 , 4 , 5 })
cout << a[i - 1] << " ";
//创建容器 并且加入元素
vector<int> v;
v.push_back(1);
v.push_back(2);
v.push_back(3);
v.push_back(3);
cout << endl;
//顺序输出v里面的元素
for(auto y : v)
cout << y << endl;
cout << endl;
//顺序改变y的值并输出 (&)
for(auto& y : v){
y *= 3;
cout << y << endl;
}
return 0;
}