STL算法概述

本文详细介绍了C++标准库中的各类算法,包括非变动性算法、变动性算法、移除性算法等,并对每种算法的功能进行了说明,如find、count、sort等常用操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include<algorithm> //C++标准库算法

#include<functional>//仿函数和函数配接器

1.nonmodifying algorithm 非变动性算法(不改动元素,即只能读取)

2.modifying algorithm 变动性算法

3.removing algorithm 移除性算法

4.mutating algorithm 变序性算法

5.sorting algorithm 排序算法

6,sorted range algorithm已序区间算法

7.numeric algorithm 数值算法

difference_type用于测定距离,区别正负

1.非变动性算法

(1) for_each(begin,end,Unary_func op) 具体见另外博客

(2) difference_type count (begin,end,const T&value); //返回value的个数

(3) difference_type count_if (begin,end,Unarypredicate op); //返回op为true的元素个数

(4) iterator min_element(begin,end); //默认less than

iterator min_element(begin,end,compFunc op); //op(elem1,elem2);

(5) iterator max_element(begin,end);

iterator max_element(begin,end,compFunc op);

(6) iterator find(begin,end,const T&value);

(7) iterator find_if(begin,end,UnaryPredicate op);

如果是已序区间用lower_bound(),upper_bound(),equal_range(),binary_search()可获更高性能

(8) Input_iterator search_n(begin,end,Size count,const T& value); //连续count个元素值全是value

Input_iterator search_n(begin,end,Size count,const T&value,BinaryPredicate op);

//连续count个元素造成op为true, op(elem,value)

(9) FowardIterator search(begin1,end1,begin2,end2); //在[begin1,end1)中寻找与[begin2,end2)相同的元素

FowardIterator search(begin1,end1,Searchbegin2,Searchend2,BinaryPredicate op);

//op(elem,searchElem),

(10) Forward_Iterator find_end(begin1,end1,searchBegin2,searchEnd2);

//[begin1,end1)中最后出现的[searchBegin2,searchEnd2)

Forward_Iterator find_end(begin1,end1,searchBegin2,searchEnd2,BinaryPredicate op);

//op(elem,searchElem);

(11)Find_first_of 查找与顺序无关。

Forward_Iterator find_first_of(begin1,end1,searchBegin2,searchEnd2)

//返回一个既在区间[begin1,end1)出现也在[searchBegin2,searchEnd2)出现的元素位置

Forward_Iterator find_first_of(begin1,end1,searchBegin2,searchEnd2,BinaryPredicate op);

//返回一个区间[begin1,end1)和区间[searchBegin2,searchEnd2)内进行op(elem,searchElem)为true

(12) InputIterator adjacant_find(begin,end); //返回连续两个相等元素的第一个位置

InputIterator adjacant_find(begin,end,BinaryPredicate op);

//op(elem,nextElem),连续两个元素使以下二元判断式的结果为true

(13) bool equal(begin1,end1,begin2);

bool equal(begin1,end1,begin2,BinaryPredicate op); //op(elem,cmpElem);

(14) pair<InputIterator1,InputIterator2> mismatch(InputIterator1 begin,InputIterator1 end,InputIterator2 cmpBeg)

返回[begin,end)和cmpBeg开头的区间第一组相异的对应元素

pair<InputIterator1,InputIterator2> mismatch(InputIterator1 begin,InputIterator1 end,InputIterator2 cmpBeg,

BinaryPredicate op);

op(elem,cmpElem); 返回使判断式为false的对应元素

(15) bool lexicographical_compare(begin1,end1,begin2,end2);

bool lexicographical_compare(begin1,end1,begin2,end2,ComFunc op);

op(elem1,elem2); elem1小于elem2则为true

字典顺序定义:

1.数量不同,如果第一个序列数量少,则为true

2.相等则false

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值