zoukankan      html  css  js  c++  java
  • 第10章 10.1-10.3笔记

    Find 返回第二个参数来表示搜索失败,否则返回指向第一个等于给定值的元素的迭代器。
    
    Int val = 42;
    Vector<int>::const_iterator  resut = find(vec.cbegin(), vec.cend(), val);
    Cout << "the value " << val
    	<< (result == vec.cend() ? " is not present" : "is present" << endl;
    Int *result = find(begin(ia), end(ia), bal);  	  	// 也可以用find来在数组中查找值
    10.2初识泛型算法
    10.2.1 只读算法
    1. Find
    2. Accumulate,该函数接受三个参数,前两个指出了需要求和的元素的范围,第三个参数是和的初值。假定vi是一个整数序列则
    int sum = accumulate(vi.cbegin(), vi.cend(), 0); //这条语句将sum设置为vi中元素的和,和的初始值被设置为0.
    Accumulate的第三个参数的类型决定了函数中使用哪个加法运算符以及返回值的类型
    string sum = accumulate(vi.cbegin(), vi.cend(),string( ""));//将所有string元素连接起来
    // 错误,如果我们传递了一个字符串字面值,   用于保存和的对象的类型将是const char*,但是const char*没有定义+运算符
    string sum = accumulate(vi.cbegin(), vi.cend(), "");          

    3.  equal比较两个序列,此算法接受3个参数,前两个表示第一个序列的元素范围,第三个表示第二个序列的首元素equal(begin(p), end(p), r)

    10.2.2 写容器元素的算法
    fill(vec.begin(), vec.end(), 2);// 算法fill接受一对迭代器表示范围,还接受一个值作为第三个参数。fill将给定的这个值赋予输入序列的每个元素
    fill_n(vec.begin(), vec.size(), 2);//功能类似于fill,第二个参数必须小于等于size()

    Back_inserter接受一个指向容器的引用,返回一个与该容器绑定的插入迭代器。当我们通过此迭代器赋值时,赋值运算符会调用push_back讲一个具有给定值的元素添加到容器中。

    vector<int> vec;	//空向量
    auto it = back_inserter(vec);
    *it = 42;		//vec现在有一个元素,值为42
    结合fill_n给容器赋值fill_n(back_inserter(vec), 10, 2);添加10个2到vec
    拷贝算法(copy)
    copy算法是列一个像目的位置迭代器指向的输出序列中的元素写入数据的算法。此算法接受三个迭代器,前两个表示一个输入范围,第三个表示目的序列的起始位置。此算法将输入范围中的元素拷贝到目的序列中,传递给copy的目的序列至少要包含于输入序列一样多的元素。
    内置数组的拷贝
    int a1[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
    int a2[sizeof(a1) / sizeof(*a1)];
    auto ret = copy(begin(a1), end(a1), a2);
    replace算法读入一个序列,并将其中所有等于给定值的元素都改为另一个值。此算法发接受四个参数:前两个是迭代器,表示输入序列,后两个一个是要搜索的的值,另一个是新值。它将所有等于第一个值的元素替换为第二值
    replace(ilst.begin(), ilst.end(), 34, 42);   //将所有值为34的元素替换为42
    sort排序,接受一对范围迭代器。
    unique重排vector,是的不重复出现的元素出现在vector的开始部分 
    sort(words.begin(), words.end());
    auto end_unique = unique(words.begin(), words.end());
    words.erase(end_unique, words.end());
    
    3 < x < 5 必须写成 x > 3 && x < 5
    X >= 5的写法是正确的
    Stable_sort 算法参数和功能与sort类似,只是这种算法非常稳定,可以维持相等元素的原有顺序
    partiton算法,接受一个谓词,对容器内容进行划分,是的谓词为true的值会排在容器的前半部分,而使的谓词为 false的会排在后半部分。算法返回一个迭代器,指向最后一个使谓词为true的元素之后的位置。
    Stable_partition与sort_sort类似,非常稳定,可以在划分后的序列中维持原有元素的顺序




  • 相关阅读:
    hdu 1199 Color the Ball 离散线段树
    poj 2623 Sequence Median 堆的灵活运用
    hdu 2251 Dungeon Master bfs
    HDU 1166 敌兵布阵 线段树
    UVALive 4426 Blast the Enemy! 计算几何求重心
    UVALive 4425 Another Brick in the Wall 暴力
    UVALive 4423 String LD 暴力
    UVALive 4872 Underground Cables 最小生成树
    UVALive 4870 Roller Coaster 01背包
    UVALive 4869 Profits DP
  • 原文地址:https://www.cnblogs.com/hi3254014978/p/12373475.html
Copyright © 2011-2022 走看看