10.1-10.2泛型算法

Posted liyubo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了10.1-10.2泛型算法相关的知识,希望对你有一定的参考价值。

技术分享图片
//10 初识泛型算法
void genericAlgorithm()
{
    //在输入序列中查找特定元素0,如果找到该元素则返回指向它的迭代器(如果有多个则指向第一个),否则返回iVec.end()
    auto iter = find(iVec.begin(), iVec.end(), 0)

    //查找特定值个数的算法,在输入序列中查找特定值 num 的个数,可以是string
    int counts = count(iVec.begin(), iVec.end(), num);
    //查找特定值个数的算法
    int i = count_if(iVec.begin(), iVec.end(), [](int num) {return num < 0; });
    
    //输入序列求和,第三个参数 0 为初始值
    int sum = accumulate(iVec.begin(), iVec.end(), 0);

    //equal 比较两个序列
    equal(iVec1.begin(), iVec1.end(), iVec2.begin());

    //序列赋值,序列值全部赋值为0
    fill(iVec.begin(), iVec.end(), 0);

    //序列赋值,序列前5个元素赋值为0,确保能容纳下5个元素是程序员的责任
    fill_n(iVec.begin(), 5, 0);

    //插入迭代器
    vector<int> iVec;
    auto iter = back_inserter(iVec);    //形参为vec的引用,返回值为与容器绑定的插入迭代器
    iter = 2;    //赋值时会调用push_back

    //copy算法,将输入序列的值拷贝至输出序列,返回值为目的位置(_OutIt _Dest)迭代器的值
    auto iter = copy(_InIt _First, _InIt _Last, _OutIt _Dest);

    //替换算法,将输入序列中的0全部替换为2,改变了输入序列
    replace(iVec.begin(), iVec.end(), 0, 2);

    //copy一份输入序列,且将其中的0全部替换为2,
    replace_copy(iVec.begin(), iVec.end(),back_inserter(iVec1) 0, 2);
    
    //接受“可调用对象”的替换算法,将iVec中的负数全部转换为正数
    transform(iVec.begin(), iVec.end(), iVec.begin(), [](int num) {return num < 0 ? -num : num; });

    //序列重新排序(升序,可以指定一个二元谓词使其降序)
    sort(iVec.begin(), iVec.end());
    //序列重新排序(稳定版)
    stable_sort(iVec.begin(), iVec.end());

    //消除相邻的重复项,返回最后一个不重复元素的迭代器
    auto end_unique = unique(iVec.begin(), iVec.end());
    
    //序列分区算法,将字符数大于5的放前面,用到谓词见下章
    bool compare5(string str)
    {
        return str.length() > 5;
    }
    //序列分区算法
    partition(vecStr.begin(), vecStr.end(), compare5);
    
    //第三个参数是一元谓词,返回指向 第一个使谓词返回非0的元素的迭代器,否则返回尾迭代器
    find_if(iVec.begin(), iVec.end(), /*一元谓词*/)
    
    //对输入序列中的每个元素调用 “可调用对象”
    for_each(iVec.begin(), iVec.end(), /*可调用对象*/);
}
View Code

 

以上是关于10.1-10.2泛型算法的主要内容,如果未能解决你的问题,请参考以下文章

这个嵌套类构造函数片段可以应用于泛型类吗?

算法漫游指北(第十篇):泛型递归递归代码模板递归思维要点分治算法回溯算法

泛型

以下代码片段的算法复杂度

有人可以解释啥是 SVN 平分算法吗?理论上和通过代码片段[重复]

Golang泛型编程初体验