一、六大部件

》容器(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;
}

10-02 14:33