C++ 笔记 23 (STL常用算法 - 算术生成 集合)

news/2025/3/25 22:02:05/

五. STL-常用算法

5. 常用算术生成算法

算术生成算法属于小型算法,使用时包含的头文件为 :
#include < numeric >

accumulate  //计算容器元素累计总和
fill        //向容器中添加元素

5.1 accumulate

功能:计算区间内容器元素累计总和
原型:

accumulate(iterator beg ,iterator end ,value);
//其中value是起始值int total = accumlate (v.begin(),v.end(),0);

总结:accumulate 使用时头文件是numeric,这个算法很使用

5.2 fill

功能:向容器中填充指定的元素
原型:

fill (iterator beg , iterator end , value);
//其中value是填充的值fill(v.begin(), v.end(),100);

总结:利用fill可以将容器区间内元素填充为指定的值

6. 常用集合算法

set_intersection   //求两个容器的交集
set_union          //求两个容器的并集
set_difference     //求两个容器的差集

6.1 set_intersection

功能:求两个容器的交集
原型:

set_intersection(iterator beg1, iterator end1, iterator beg2, iterator end2, iterator dest);
//两个集合必须是有序序列,其中iterator dest是目标容器开始迭代器

示例:

//取两个里面较小的值给目标容器开辟空间
vTarget.resize(min(v1.size(),v2.size()));//返回目标容器的最后一个元素的迭代器地址
vector<int>::iterator itEnd = set_intersection(v1.begin(),v1.end()),v2.begin(),v2.end(),vTarget.begin());

总结:
1)求交集的两个集合必须是有序序列;
2)目标容器开辟空间需要从两个容器中取最小值
3)set_intersecton返回值是交集中最后一个元素的位置

6.2 set_union

功能:求两个集合的并集
原型:

set_union(iterator beg1, iterator end1, iterator beg2, iterator end2, iterator dest);
//两个集合必须是有序序列//取两个容器的和给目标容器开辟空间
vTarget.resize(v1.size() + v2.size());//返回目标容器的最后一个元素的迭代器地址
vector<int>::iterator itEnd = set_union(v1.begin(),v1.end()),v2.begin(),v2.end(),vTarget.begin());

总结:
1)求并集的两个集合必须是有序序列;
2)目标容器开辟空间需要两个容器相加
3)set_union返回值是并集中最后一个元素的位置

6.3 set_difference

功能:求两个集合的差集
原型:

set_difference(iterator beg1, iterator end1, iterator beg2, iterator end2, iterator dest);
//两个集合必须是有序序列//取两个里面较大的值给目标容器开辟空间
vTarget.resize(max(v1.size(),v2.size()));//返回目标容器的最后一个元素的迭代器地址
vector<int>::iterator itEnd = set_union(v1.begin(),v1.end()),v2.begin(),v2.end(),vTarget.begin());

总结:
1)求差集的两个集合必须是有序序列;
2)目标容器开辟空间需要从两个容器中取较大值
3)set_difference返回值是差集中最后一个元素的位置


http://www.ppmy.cn/news/551499.html

相关文章

DevOps系列文章之 linux安装ftp

第一步 1、用root 进入系统 2、使用命令 rpm -qa|grep vsftpd 查看系统是否安装了ftp&#xff0c;若安装了vsftp&#xff0c;使用这个命令会在屏幕上显示vsftpd的版本 3、使用命令rpm -e vsftpd 即可卸载ftp 4、再使用rpm -qa|grep vsftpd 查看系统是否已删除ftp&#xff0…

XC7K325T芯片配置管脚说明

配置管脚(bank0.bank14.bank15电平尽量一致)

XC7K325的selectMAP配置

FPGA从selectMAP配置模式需要注意一下几点&#xff1a; 1、FPGA的selectMAP接口最好按selectMAP模式进行布线布局&#xff0c;否则需要修改线序 2、如果板子已经绘制完成&#xff0c;即selectMAP接口被打乱&#xff0c;必须从FPGA处看进去调整线序&#xff0c;既保持MCU或者C…

基于xc7k325t fbg900的IBRET的测试流程

1.打开vivado软件&#xff0c;选择xc7k325t fbg900芯片&#xff0c;然后在IP Catalog找到IBERT并双击打开。 2.配置选项 第一页 第二页 这里的refclk selection 选择mgtrefclk1 117 通道0。 第三页 在开发板中&#xff0c;差分时钟与MGTREFCLK1 117连接&#xff0c;因此参…

关于XC7K325T设计总结(填坑)

基于XC7K325T的板卡设计总结 1、供电部分保证各电压模块足够电流&#xff0c;最好参考KC705设计电流要求 2、对于配置部分可根据要求设计上下拉电阻&#xff0c;根据实际需求进行配置 3、对于多主控板卡设计&#xff0c;其他主控可以配置固化FPGA&#xff0c;此时FPGA处于从…

PCIe通用信号处理板PCIe-XC7K325T-FMC

PCIe-XC7K325T-FMC板卡是一款PCIe标准的信号处理载板&#xff0c;板上采用1片Xilinx XC7K325T FPGA。FPGA可支持最高2GB容量的 SODIMM&#xff0c;支持1个FMC接口&#xff0c;支持1个8X PCIe2.0接口&#xff0c;支持2个RS485接口。该板卡可以独立或者搭配FMC标准子卡工作&#…

国产spi flash 配置xilinx xc7k325t

在项目中使用了xilinx的7系FPGA芯片xc7k325t-2ffg900&#xff0c;配置模式采用主串方式&#xff0c;开发环境采用ise14.7&#xff0c;故在原理设计阶段&#xff0c;spi flash芯片选用了华邦电子华邦电子的W25Q128FVSIG。 在产品装配阶段&#xff0c;华邦电子的W25Q128FVSIG芯片…

XC7K325T设计注意事项

1、注意MODE模式设置&#xff0c;一般设置JTAG模式&#xff0c;如果是通过电阻进行上下拉进行实现&#xff0c;一定将相应不焊电阻进行NC。 2、关于PUDC一定要根据实际情况进行设计&#xff0c;否则&#xff0c;会出现静态电流过高&#xff0c;芯片发热严重。 3、芯片核压电流…