重学c++(七)

一、transform算法&lambda表达式

1、两个重载版本

 

  transform(first,last,result,op);//first是容器的首迭代器,last为容器的末迭代器,result为存放结果的容器,op为要进行操作的一元函数对象或sturct、class。
  transform(first1,last1,first2,result,binary_op);//first1是第一个容器的首迭代 器,last1为第一个容器的末迭代器,first2为第二个容器的首迭代器,result为存放结果的容器,binary_op为要进行操作的二元函数 对象或sturct、class。(注意:第二个重载版本必须要保证两个容器的元素个数相等才行,否则会抛出异常)

2、[函数对象参数] (操作符重载函数参数) mutable 或 exception 声明 -> 返回值类型 {函数体}

3、例子

    int ones[] = { 1,2,3,4,5 };
    int twos[] = { 10,20,30,40,50 };
    int results[5];
    transform(ones,ones+5,twos,results,std::plus<int>());

    for_each(results,results+5,
        [](int a)->void {
        cout << a << endl; });

二、STL容器的统计与二分查找

    int arr[] = { 0,1,2,3,4,5,6,6,7,7,7,8 };
    vector<int>iA(arr + 2, arr + 6);
    cout << count(arr, arr + sizeof(arr) / sizeof(arr[0]), 7) << endl;;
    cout << count_if(arr, arr + sizeof(arr) / sizeof(arr[0]), bind2nd(less<int>(),7)) << endl;
    cout << count_if(arr, arr + sizeof(arr) / sizeof(arr[0]), bind1st(less<int>(), 7)) << endl;
    cout << binary_search(arr,arr+ sizeof(arr) / sizeof(arr[0]),9) << endl;
    cout << *search(arr, arr + sizeof(arr) / sizeof(arr[0]), iA.begin(), iA.end()) << endl;

三、STL全排列(前提必须保证顺序

    char test[] = "123";
    do {
        cout << test[0] << " " << test[1] << " " << test[2] << endl;
    } while (next_permutation(test, test + 3));
    char test[] = "321";
    do {
        cout << test[0] << " " << test[1] << " " << test[2] << endl;
    } while (prev_permutation(test, test + 3));

四、迭代器

1、正向迭代器iterator;反向迭代器reverse_iterator;常量正向迭代器const_iterator;常量反向迭代器const_reverse_iterator

2、容器与迭代器

    list<int>n;
    n.push_back(3);
    n.push_back(4);
    n.push_front(2);
    n.push_front(1);

    list<int>::reverse_iterator it;
    for (it = n.rbegin(); it != n.rend(); it++)
        cout << *it << endl;

五、容器适配器

1、stack(底层deque)

2、queue

3、priority_queue(堆排序;底层deque或vector)

    priority_queue<int>pq;//默认是最大值优先
    priority_queue<int,vector<int>,greater<int>>pq2;//最小值优先
    priority_queue<int, vector<int>, less<int>>pq3;//最大值优先

六、空间配置器(allocator)(《STL源码剖析》侯捷)

七、Boost库

posted @ 2021-10-05 16:38  学学学学学ll  阅读(43)  评论(0)    收藏  举报