STL常用算法

来源:互联网 发布:电信运营商的网络架构 编辑:程序博客网 时间:2024/06/06 01:00
1、sort
    函数原型:sort(v.begin(),v.end());

2、unique
    函数原型:unique(v.begin(),v.end());
    auto end_unique = unique(begin(vec1),end(vec1));
    vec1.erase(end_unique,vec1.end());//去掉重复元素。

3、string相关
    string str = to_string(i);//整型数转换为string。
    int i = stoi(str);//string转换为整型值。
    str2.append(str);//追加字符串。

    str2.resize(str2.size()+d,'0');//通过resize将字符串高位补d个零。

    string str2 = str.substr(j,cnt);//构造字符串:在str字符串中从j位置开始的cnt个字符。

    string(f,end(str));//构造字符串:在str字符串中从f位置开始到某个结束位置的所有字符。


4、remove和erase移除元素
    str.erase(remove(str.begin(),str.end(),' '),str.end());

5、序列反转reverse
    reverse(begin(str1),end(str1));//字符串反转。

6、序列交换swap
    swap(str1,str2);//交换两个字符串。

7、统计等于某值的容器元素个数count
    list<int> l;
    count(l.begin(),l.end(),value)。

8、条件统计count_if
    count_if(l.begin(),l.end(),pred)。谓词pred含义同find_if中的谓词。

9、查找容器元素find

    它用于查找等于某值的元素。它在迭代器区间[first,last)(闭开区间)上查找等于value值的元素,如果迭代器i所指的元素满足*i=value,则返回迭代器i;未找到满足条件的元素,返回last。

    函数原型:find( v1.begin(), v1.end(), num_to_find );


10、条件查找容器元素find_if

    利用返回布尔值的谓词判断pred,检查迭代器区间[first,last)(闭开区间)上的每一个元素,如果迭代器i满足pred(*i)=true,表示找到元素并返回迭代值i(找到的第一个符合条件的元素);未找到元素,返回末位置last。

    函数原型:find_if(v.begin(),v.end(),divby5);


11、子序列搜索search
    search算法函数在一个序列中搜索与另一序列匹配的子序列。参数分别为一个序列的开始位置,结束位置和另一个序列的开始,结束位置。

12、重复元素子序列搜索search_n

    search_n算法函数搜索序列中是否有一系列元素值均为某个给定值的子序列。

    函数原型:search_n(v.begin(),v.end(),3,8),在v中找到3个连续的元素8。


13、最后一个子序列搜索find_end
    函数原型find_end(v1.begin(),v1.end(),v2.begin(),v2.end());在V1中要求的位置查找V2中要求的序列。

14、元素复制copy
    copy(v.begin(),v.end(),l.begin());将v中的元素复制到l中。
    
15、元素变换transform

    函数原型:transform(v.begin(),v.end(),l.begin(),square);也是复制,但是要按某种方案复制。


16、替换replace
    replace算法将指定元素值替换为新值。

17、条件替换replace_if
    函数原型:replace_if(v.begin(),v.end(),odd,100);

18、n次填充fill_n
    函数原型fill_n(v.begin(),5,-1);向从v.begin开始的后面5个位置跳入-1。

19、随机生成n个元素generate
    函数原型:generate_n(v.begin(),5,rand);向从v.begin开始的后面5个位置随机填写数据。

20、条件移除remove_if
    返回值相当于移除满足条件的元素后形成的新向量的end()值。
    函数原型:remove_if(v.begin(),v.end(),even);

21、堆排序sort_heap
    使用:
    make_heap(v.begin(),v.end());
    sort_heap(v.begin(),v.end());