C++里非常实用的库函数

整理了C++里非常实用的库函数,有的方法不用自己再写!

#include里的函数

#include

  • 非修改性序列操作(12个):

循环 对序列中的每个元素执行某操作 for_each()
查找 在序列中找出某个值的第一次出现的位置 find()
在序列中找出符合某谓词的第一个元素 find_if()
在序列中找出一子序列的最后一次出现的位置 find_end()
在序列中找出第一次出现指定值集中之值的位置 find_first_of()
在序列中找出相邻的一对值 adjacent_find()
计数 在序列中统计某个值出现的次数 count()
在序列中统计与某谓词匹配的次数 count_if()
比较 找出两个序列相异的第一个元素 mismatch()
两个序列中的对应元素都相同时为真 equal()
搜索 在序列中找出一子序列的第一次出现的位置 search()
在序列中找出一值的连续n次出现的位置 search_n()

  • 修改性序列操作(27个)

复制 从序列的第一个元素起进行复制 copy()
从序列的最后一个元素起进行复制 copy_backward()
交换 交换两个元素 swap()
交换指定范围的元素 swap_ranges()
交换由迭代器所指的两个元素 iter_swap()
变换 将某操作应用于指定范围的每个元素 transform()
替换 用一个给定值替换一些值 replace()
替换满足谓词的一些元素 replace_if()
复制序列时用一给定值替换元素 replace_copy()
复制序列时替换满足谓词的元素 replace_copy_if()
填充 用一给定值取代所有元素 fill()
用一给定值取代前n个元素 fill_n()
生成 用一操作的结果取代所有元素 generate()
用一操作的结果取代前n个元素 generate_n()
删除 删除具有给定值的元素 remove()
删除满足谓词的元素 remove_if()
复制序列时删除具有给定值的元素 remove_copy()
复制序列时删除满足谓词的元素 remove_copy_if()
唯一 删除相邻的重复元素 unique()
复制序列时删除相邻的重复元素 unique_copy()
反转 反转元素的次序 reverse()
复制序列时反转元素的次序 reverse_copy()
环移 循环移动元素 rotate()
复制序列时循环移动元素 rotate_copy()
随机 采用均匀分布来随机移动元素 random_shuffle()
划分 将满足某谓词的元素都放到前面 partition()
将满足某谓词的元素都放到前面并维持原顺序 stable_partition()

  • 序列排序及相关操作(27个)

排序 以很好的平均效率排序 sort()
排序,并维持相同元素的原有顺序 stable_sort()
将序列的前一部分排好序 partial_sort()
复制的同时将序列的前一部分排好序 partial_sort_copy()
第n个元素 将第n各元素放到它的正确位置 nth_element()
二分检索 找到大于等于某值的第一次出现 lower_bound()
找到大于某值的第一次出现 upper_bound()
找到(在不破坏顺序的前提下)可插入给定值的最大范围 equal_range()
在有序序列中确定给定元素是否存在 binary_search()
归并 归并两个有序序列 merge()
归并两个接续的有序序列 inplace_merge()
有序结构上的集合操作 一序列为另一序列的子序列时为真 includes()
构造两个集合的有序并集 set_union()
构造两个集合的有序交集 set_intersection()
构造两个集合的有序差集 set_difference()
构造两个集合的有序对称差集(并-交) set_symmetric_difference()
堆操作 向堆中加入元素 push_heap()
从堆中弹出元素 pop_heap()
从序列构造堆 make_heap()
给堆排序 sort_heap()
最大和最小 两个值中较小的 min()
两个值中较大的 max()
序列中的最小元素 min_element()
序列中的最大元素 max_element()
词典比较 两个序列按字典序的第一个在前 lexicographical_compare()
排列生成器 按字典序的下一个排列 next_permutation()
按字典序的前一个排列 prev_permutation()

#include 字符串操作

#include

string类型作为一个类而不是基础数据类型,有其构造方法,库函数中提供的方法我认为比较好用的有以下几种:

(1)strings; //生成一个空字符串s
(2)string s(str) //拷贝构造函数生成str的复制品

(3)strings(chars,chars_len) //将C字符串前chars_len个字符作为字符串s的初值。

除了构造方法之外,还有一些字符串操作的函数,很好用,初学者可以把string类型当成int类型来看。(重载运算符真是c++中一个非常高明的地方):

(1)=,assign() //赋以新值
(2)swap() //交换两个字符串的内容
(3)+=,append(),push_back() //在尾部添加字符
(4) insert() //插入字符
(5) erase() //删除字符
(6) clear() //删除全部字符

(7)replace()//替换字符

(8)+//串联字符串
(9)==,!=,<,<=,>,>=,compare() //比较字符串

(10)size(),length() //返回字符数量
(11)empty() //判断字符串是否为空

#include 容器数组操作

相关内容来自于博客

#include

vector作为容器,时常用在我需要动态存储数据时,有时为了减小空间复杂度,不会设置固定大小的数组,而使用vector,相关的操作函数也很简单,可能起到的作用比存储还要多。其构造方法常用的为:

(1)vector c // 创建一个空的vector
(2)vector c1(c2) // 复制一个vector
(3)vector c(n) // 创建一个vector,含有n个数据,数据均已缺省构造产生

相关的操作函数为:

c.assign(beg,end) // 将[beg; end)区间中的数据赋值给c。

c.assign(n,elem) // 将n个elem的拷贝赋值给c。
c.at(idx) //传回索引idx所指的数据,如果idx越界,抛出out_of_range。
c.back() // 传回最后一个数据,不检查这个数据是否存在。
c.begin() // 传回迭代器中的第一个数据地址。
c.capacity() // 返回容器中数据个数。
c.clear() // 移除容器中所有数据。
c.empty() // 判断容器是否为空。
c.end() // 指向迭代器中末端元素的下一个,指向一个不存在元素。
c.erase(pos) // 删除pos位置的数据,传回下一个数据的位置。
c.erase(beg,end) //删除[beg,end)区间的数据,传回下一个数据的位置。
c.front() // 传回第一个数据。
c.get_allocator // 使用构造函数返回一个拷贝。
c.insert(pos,elem) // 在pos位置插入一个elem拷贝,传回新数据位置。
c.insert(pos,n,elem) // 在pos位置插入n个elem数据。无返回值。
c.insert(pos,beg,end)// 在pos位置插入在[beg,end)区间的数据。无返回值。
c.max_size() // 返回容器中最大数据的数量。
c.pop_back() // 删除最后一个数据。
c.push_back(elem) // 在尾部加入一个数据。
c.rbegin() // 传回一个逆向队列的第一个数据。
c.rend() // 传回一个逆向队列的最后一个数据的下一个位置。
c.resize(num) // 重新指定队列的长度。
c.reserve() // 保留适当的容量。
c.size() // 返回容器中实际数据的个数。
c1.swap(c2)
swap(c1,c2) // 将c1和c2元素互换。同上操作。

#include 队列操作

#include

队列其实很多操作和vector一样,马上要讲到的stack其实也一样,不过学了数据结构的新手们还是能稍微分别两者的一些差别的,不多说,先上函数:

empty():返回bool类型的值,是否队列为空

push():会将一个元素置入queue中
front():会返回queue内的第一个元素(队头)
back():会返回queue中的最后一个元素(队尾)
pop():会移除queue内的第一个元素(队头,与stack不同,先进者先出)

size():返回队列中元素多少

#include 栈操作

#include

栈的操作与队列相差不多,直接上函数:

empty():返回bool类型的值,是否为空

push():入栈,将一个元素插入到栈顶

pop():出栈,讲一个元素移除栈顶,不返回该值

top():返回栈顶元素

size():返回栈中元素的多少