c++续集

函数对象(仿函数)

1.在使用时,可以像普通函数一样调用,可以有参数,可以有返回值

2.函数对象可以有自己的状态,超出普通函数的概念

3.函数对象可以作为参数传递

谓词:

返回值类型是bool 类型

形参有一个的是一元谓词,有两个的是二元谓词

内建仿函数:#include<functional>

1.算数仿函数

2.关系仿函数

3.逻辑仿函数

算法:

遍历算法:

for_each( 起始迭代器,结束迭代器,函数或仿函数)函数名称,或匿名仿函数

transform(源容器起始迭代器,源容器结束迭代器,目标容器开始迭代器,函数或函数对象);

函数:在搬运过程中对数据的操作

目标容器必须要先开辟空间

查找算法:

find (开始迭代器,结束迭代器,要查元素): 查找元素,查到了返回指定元素的迭代器,找不到返回结束迭代器   自定义数据类型重载==,只能找到第一个符合条件的

find_if( 开始迭代器,结束迭代器,谓词)按条件查找元素,只能找到第一个符合条件的

adjacent_find ( 开始迭代器,结束迭代器)查找相邻重复元素,返回找到的第一个元素怒的迭代器

binary_serach (开始迭代器,结束迭代器,要查元素) 二分查找:返回bool,有序

count  (开始迭代器,结束迭代器,要查元素)要查元素要和vector 容器中元素相同

count_if( 开始迭代器,结束迭代器,谓词)

两个带if 的都需要重载( ) 

排序算法:

1.sort( 开始迭代器,结束迭代器,谓词)第三个可填可不填

2.random_shuffle( 开始迭代器,结束迭代器)洗牌

要加种子否则每次打乱的次序一样

3.merge(b1,e1,b2,e2,b3)将两个有序容器合并,得到一个有序容器,目标容器要先开辟空间

4.reverse ( 开始迭代器,结束迭代器)反转

拷贝和替换算法:

1.copy(b1,e1,b2)

2.replace (b1,e1,旧元素,新元素) 所有旧元素

3.replace_if (b1,e1,谓词,新元素)

4.swap ( 容器一,容器二 )

算数生成算法:

头文件<numeric>

1.accumulate(b1,e1,0)累加,参数3为起始累加值

2.fill (b1,e1, num) 后期填充

常用集合算法

1.set_intersection(b1,e1,b2,e2 ,b3)交集   

目标容器需要开辟空间

必须要有序

返回的是结束迭代器

2.set_union(b1,e1,b2,e2 ,b3)

有序

目标容器需要开辟两个容器相加

返回的是结束迭代器

3.set_difference 差集(b1,e1,b2,e2 ,b3)

有序

目标容器需要开辟两个容器大的

返回的是结束迭代器

补充内容:

mapbegin()成员函数在C++标准模板库(STL)中用于返回一个迭代器,该迭代器指向map容器中的第一个元素(即键值对)。这里的“第一个元素”是根据map内部使用的排序准则(通常是键值对的键的升序)来确定的。

具体来说,mapbegin()方法返回的是一个双向迭代器(bidirectional iterator),它支持递增(++)和递减(--)操作,但不支持随机访问(即不支持通过索引直接访问元素)。通过这个迭代器,可以遍历map中的所有元素,直到达到由end()返回的迭代器为止,该迭代器指向map中最后一个元素之后的“位置”(实际上并不指向任何元素,而是一个理论上的位置,用于表示遍历的结束)。

以下是一些关键点总结:

  • map.begin():返回一个迭代器,指向map中的第一个键值对。
  • 迭代器类型:在C++ STL中,map的迭代器是双向迭代器,支持递增和递减操作。
  • 遍历:可以使用begin()返回的迭代器作为遍历map的起点,与end()返回的迭代器配合,使用循环结构(如for循环)遍历map中的所有元素。
  • 注意事项:end()返回的迭代器不指向任何实际元素,而是指向最后一个元素之后的“位置”,因此在遍历过程中应注意不要尝试解引用(dereference)end()返回的迭代器。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值