您的位置:首页 > 编程语言 > C语言/C++

C++<Algorithm>学习

2016-03-27 19:21 239 查看
for_each(iter.begin(), iter.end(), func)

把*iter作为func的参数,对每个*iter做func操作

( 也可以是数组for_each(a, a+5, func) )

find(iter.begin(), iter.end(), value)

寻找value,返回指向value的迭代器,没找到指向末尾

( 也可以是数组find(a, a+5, v) )

find_if(iter.begin(), iter.end(), func)

寻找符合func条件的元素,返回指向该元素的迭代器,没找到指向末尾 func必须返回true或false

( 也可以是数组find(a, a+5, func) )

find_end(iter1.begin(), iter1.end(), iter2.begin(), iter2.end())

在iter1串中寻找iter2子串出现最后一次的位置,成功返回指向最后一次位置的首地址,没找到指向iter1的end

( 也可以是数组find(a, a+5, b, b+2) )

find_first_of(iter1.begin(), iter1.end(), iter2.begin(), iter2.end())

找iter2的(任何)元素最先在iter1中出现的位置,成功返回iter1中该元素的位置,失败返回iter1的end

(里面的迭代器和数组可以互换)

adjacent_find (iter.begin(), iter.end())

在iter中找最先连续出现相同元素的位置,失败返回iter的end

count (iter.begin(), iter.end(), value)

在iter中出现的次数

count_if(iter.begin(), iter.end(), func)

在iter中寻找满足func条件的元素的个数,func必须返回true或false

search(iter1.begin(), iter1.end(), iter2.begin(), iter2.end())

在iter1串中寻找iter2子串出现第一次的位置,成功返回指向第一次位置的首地址,没找到指向iter1的end

( 也可以是数组search(a, a+5, b, b+2) )

search_n (iter.begin(), iter.end(), n,value)

寻找连续n次出现value的我izhi,返回指向value的迭代器,没找到指向末尾

( 也可以是数组search_n (a, a+5, n, v) )

sort、stable_sort的区别是stable_sort是稳定排序

//下面四个函数都是在已经排好序的序列上进行操作的

lower_bound:Return iterator to lower bound of equal_range

upper_bound:Return iterator to upper bound of equal_range

equal_range:Get subrange of equal elements

binary_search:Test if value exists in sorted sequence,return bool

min_element(iter.begin(), iter.end()):返回最小元素的位置

max_element(iter.begin(), iter.end()):返回最大元素的位置

( 也可以是数组)

bool next_permutation (iter.begin(), iter.end()):更大的排列,如果当前是最大排列,下一个就是最小的排列,返回false,其余返回true

bool prev_permutation (iter.begin(), iter.end()):更小的排列,如果当前是最小排列,下一个就是最大的排列,返回false,其余返回true

lexicographical_compare(iter1.begin(), iter1.end(), iter2.begin(), iter2.end()):字典序比较,iter1<iter2返回true 复杂度是线性的

( 也可以是数组)

for_each(iter.begin(), iter.end(), func)

把*iter作为func的参数,对每个*iter做func操作

( 也可以是数组for_each(a, a+5, func) )

find(iter.begin(), iter.end(), value)

寻找value,返回指向value的迭代器,没找到指向末尾

( 也可以是数组find(a, a+5, v) )

find_if(iter.begin(), iter.end(), func)

寻找符合func条件的元素,返回指向该元素的迭代器,没找到指向末尾 func必须返回true或false

( 也可以是数组find(a, a+5, func) )

find_end(iter1.begin(), iter1.end(), iter2.begin(), iter2.end())

在iter1串中寻找iter2子串出现最后一次的位置,成功返回指向最后一次位置的首地址,没找到指向iter1的end

( 也可以是数组find(a, a+5, b, b+2) )

find_first_of(iter1.begin(), iter1.end(), iter2.begin(), iter2.end())

找iter2的(任何)元素最先在iter1中出现的位置,成功返回iter1中该元素的位置,失败返回iter1的end

(里面的迭代器和数组可以互换)

adjacent_find (iter.begin(), iter.end())

在iter中找最先连续出现相同元素的位置,失败返回iter的end

count (iter.begin(), iter.end(), value)

在iter中出现的次数

count_if(iter.begin(), iter.end(), func)

在iter中寻找满足func条件的元素的个数,func必须返回true或false

search(iter1.begin(), iter1.end(), iter2.begin(), iter2.end())

在iter1串中寻找iter2子串出现第一次的位置,成功返回指向第一次位置的首地址,没找到指向iter1的end

( 也可以是数组search(a, a+5, b, b+2) )

search_n (iter.begin(), iter.end(), n,value)

寻找连续n次出现value的我izhi,返回指向value的迭代器,没找到指向末尾

( 也可以是数组search_n (a, a+5, n, v) )

sort、stable_sort的区别是stable_sort是稳定排序

//下面四个函数都是在已经排好序的序列上进行操作的

lower_bound:Return iterator to lower bound of equal_range

upper_bound:Return iterator to upper bound of equal_range

equal_range:Get subrange of equal elements

binary_search:Test if value exists in sorted sequence,return bool

min_element(iter.begin(), iter.end()):返回最小元素的位置

max_element(iter.begin(), iter.end()):返回最大元素的位置

( 也可以是数组)

bool next_permutation (iter.begin(), iter.end()):更大的排列,如果当前是最大排列,下一个就是最小的排列,返回false,其余返回true

bool prev_permutation (iter.begin(), iter.end()):更小的排列,如果当前是最小排列,下一个就是最大的排列,返回false,其余返回true

lexicographical_compare(iter1.begin(), iter1.end(), iter2.begin(), iter2.end()):字典序比较,iter1<iter2返回true 复杂度是线性的

( 也可以是数组)

for_each(iter.begin(), iter.end(), func)

把*iter作为func的参数,对每个*iter做func操作

( 也可以是数组for_each(a, a+5, func) )

find(iter.begin(), iter.end(), value)

寻找value,返回指向value的迭代器,没找到指向末尾

( 也可以是数组find(a, a+5, v) )

find_if(iter.begin(), iter.end(), func)

寻找符合func条件的元素,返回指向该元素的迭代器,没找到指向末尾 func必须返回true或false

( 也可以是数组find(a, a+5, func) )

find_end(iter1.begin(), iter1.end(), iter2.begin(), iter2.end())

在iter1串中寻找iter2子串出现最后一次的位置,成功返回指向最后一次位置的首地址,没找到指向iter1的end

( 也可以是数组find(a, a+5, b, b+2) )

find_first_of(iter1.begin(), iter1.end(), iter2.begin(), iter2.end())

找iter2的(任何)元素最先在iter1中出现的位置,成功返回iter1中该元素的位置,失败返回iter1的end

(里面的迭代器和数组可以互换)

adjacent_find (iter.begin(), iter.end())

在iter中找最先连续出现相同元素的位置,失败返回iter的end

count (iter.begin(), iter.end(), value)

在iter中出现的次数

count_if(iter.begin(), iter.end(), func)

在iter中寻找满足func条件的元素的个数,func必须返回true或false

search(iter1.begin(), iter1.end(), iter2.begin(), iter2.end())

在iter1串中寻找iter2子串出现第一次的位置,成功返回指向第一次位置的首地址,没找到指向iter1的end

( 也可以是数组search(a, a+5, b, b+2) )

search_n (iter.begin(), iter.end(), n,value)

寻找连续n次出现value的我izhi,返回指向value的迭代器,没找到指向末尾

( 也可以是数组search_n (a, a+5, n, v) )

sort、stable_sort的区别是stable_sort是稳定排序

//下面四个函数都是在已经排好序的序列上进行操作的

lower_bound:Return iterator to lower bound of equal_range

upper_bound:Return iterator to upper bound of equal_range

equal_range:Get subrange of equal elements

binary_search:Test if value exists in sorted sequence,return bool

min_element(iter.begin(), iter.end()):返回最小元素的位置

max_element(iter.begin(), iter.end()):返回最大元素的位置

( 也可以是数组)

bool next_permutation (iter.begin(), iter.end()):更大的排列,如果当前是最大排列,下一个就是最小的排列,返回false,其余返回true

bool prev_permutation (iter.begin(), iter.end()):更小的排列,如果当前是最小排列,下一个就是最大的排列,返回false,其余返回true

lexicographical_compare(iter1.begin(), iter1.end(), iter2.begin(), iter2.end()):字典序比较,iter1<iter2返回true 复杂度是线性的

( 也可以是数组)

make_heap(iter.begin(), iter.end()):建立最大堆(可以传入第三个参数greater<T>() 构建最小堆)

push_heap(iter.begin(), iter.end()):往最大堆里面插入一个元素(可以传入第三个参数greater<T>() 表示往最小堆里面插入一个元素)

pop_heap(iter.begin(), iter.end()):将最大堆里面最大的元素删除(可以传入第三个参数greater<T>() 将最小堆里面最小的元素删除)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: