STL学习笔记(数值算法)

运用数值算法之前必须先加入头文件<numeric>

 

加工运算后产生结果

1.对序列进行某种运算

T

accumulate(InputIterator beg,InputIterator end,

                   T initValue)

accumulate(InputIterator beg,InputIterator end,

                   T initValue,BinaryFunc op)

1.第一种形式计算InitValue和区间[beg,end)内所有元素的总和。

2.第二种形式计算initValue和区间[beg,end)内每一个元素进行op运算的结果。更具体的说,它针对每一个元素调用以下表达式:

   initValue=op(initValue,elem)

 

下面这个例子展示如何使用accumulate()得到区间内所有元素的总和和乘积:

 1 #include "algostuff.hpp"
 2 using namespace std;
 3 
 4 int main()
 5 {
 6     vector<int> coll;
 7     INSERT_ELEMENTS(coll,1,9);
 8     PRINT_ELEMENTS(coll);
 9     cout<<"sum: "
10         <<accumulate(coll.begin(),coll.end(),0)
11         <<endl;
12     cout<<"sum: "
13         <<accumulate(coll.begin(),coll.end(),-100)
14         <<endl;
15     cout<<"product: "
16         <<accumulate(coll.begin(),coll.end(),1,multiplies<int>())
17         <<endl;
18     cout<<"product: "
19         <<accumulate(coll.begin(),coll.end(),0,multiplies<int>())
20         <<endl;
21 }
View Code

 

2.计算两序列的内积

T

inner_product(InputIterator beg1,InputIterator end1,

                       InputIterator beg2,T initValue)

T

inner_product(InputIterator beg1,InputIterator end1,

                       InputIterator beg2,T initValue,

                       BinaryFunc op1,BinaryFunc op2)

1.第一种形式针对“两区间内的每一组对应元素”调用以下表达式:

   initValue=initValue+elem1+elem2

2.第二形式则调用以下表达式:

  initValue=op1(initValue,op2(elem1,elem2))

 

以下程序示范inner_product()的用法

 1 #include "algostuff.hpp"
 2 using namespace std;
 3 
 4 int main()
 5 {
 6     list<int> coll;
 7     INSERT_ELEMENTS(coll,1,6);
 8     PRINT_ELEMENTS(coll);
 9     cout<<"inner product: "
10         <<inner_product(coll.begin(),coll.end(),coll.begin(),0)
11         <<endl;
12     cout<<"inner reverse product: "
13         <<inner_product(coll.begin(),coll.end(),coll.rbegin(),0)
14         <<endl;
15     cout<<"product of sums: "
16         <<inner_product(coll.begin(),coll.end(),coll.begin(),1,multiplies<int>(),plus<int>())
17         <<endl;
18 }
View Code

 

 

相对值跟绝对值之间的转换

1.将相对值转换成绝对值

OutputIterator

partial_sum(InputIterator sourceBeg,

                    InputIterator sourceEnd,

                    OutputIterator destBeg)

OutputIterator

partial_sum(InputIterator sourceBeg,

                    InputIterator sourceEnd,

                    OutputIterator destBeg,BinaryFunc op)

1.第一形式计算源区间[sourceBeg,sourceEnd)中每个元素的部分和,然后将结果写入以destBeg为起点的目标区间

2.第二形式将源区间[sourceBeg,sourceEnd)中的每个元素和其先前所有元素进行op运算,并将结果写入destBeg为起点的目标区间

   例如对于以下数值序列:a1 a2 a3 ...

   它们分别计算:

   a1,a1+a2,a1+a2+a3,..

   a1,a1 op a2,a1 op a2 op a2,...

以下程序示范partial_sum()的用法

 1 #include <iterator>
 2 #include "algostuff.hpp"
 3 using namespace std;
 4 
 5 int main()
 6 {
 7     vector<int> coll;
 8     INSERT_ELEMENTS(coll,1,6);
 9     PRINT_ELEMENTS(coll);
10     partial_sum(coll.begin(),coll.end(),ostream_iterator<int>(cout," "));
11     cout<<endl;
12     partial_sum(coll.begin(),coll.end(),ostream_iterator<int>(cout," "),multiplies<int>());
13     cout<<endl;
14 }
View Code

 

 

2.将绝对值转换成相对值

OutputIterator

adjacent_difference(InputIterator sourceBeg,

                                InputIterator sourceEnd,

                                OutputIterator destBeg)

OutputIterator

adjacent_difference(InputIterator sourceBeg,

                                InputIterator sourceEnd,

                                OutputIterator destBeg)

1.第一种形式计算区间[sourceBeg,sourceEnd)中每一个元素和其紧邻前驱元素的差额,并将结果写入destBeg为起点的目标区间

2.第二种形式针对区间[sourceBeg,sourceEnd)中每一个元素和其紧邻前驱元素调用op操作,并将结果写入destBeg为起点的目标区间

   对于以下数值序列:

   a1,a2,a3,a4,...

   它们分别计算:

   a1,a2-a1,a3-a2,a4-a3,...

   a1,a2 op a1,a3 op a2,a4 op a3,...

以下程序示范adjacent_difference()的用法

 1 #include <iterator>
 2 #include "algostuff.hpp"
 3 using namespace std;
 4 
 5 int main()
 6 {
 7     deque<int> coll;
 8     INSERT_ELEMENTS(coll,1,6);
 9     PRINT_ELEMENTS(coll);
10     adjacent_difference(coll.begin(),coll.end(),ostream_iterator<int>(cout," "),plus<int>());
11     cout<<endl;
12     adjacent_difference(coll.begin(),coll.end(),ostream_iterator<int>(cout," "),multiplies<int>());
13     cout<<endl;
14 }
View Code

 

转载于:https://www.cnblogs.com/runnyu/p/4849852.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/397454.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

angualejs

为什么80%的码农都做不了架构师&#xff1f;>>> http://segmentfault.com/a/1190000000347412 http://www.xker.com/page/e2015/06/199141.html http://www.runoob.com/angularjs/angularjs-application.html http://blog.csdn.net/lglgsy456/article/details/3690…

linux函数地址获取函数名,函数名/函数地址/函数指针

函数指针&#xff1a;1。指针变量 2。指针变量指向函数这正如用指针变量可指向整型变量、字符型、数组一样。在编译时&#xff0c;每一个函数都有一个入口地址&#xff0c;该入口地址就是函数指针所指向的地址。可利用该指针变量调用函数&#xff0c;就如同用指针变量可引用其他…

SPOJ SORTBIT Sorted bit squence (数位DP,入门)

题意&#xff1a; 给出一个范围[m,n]&#xff0c;按照二进制表示中的1的个数从小到大排序&#xff0c;若1的个数相同&#xff0c;则按照十进制大小排序。求排序后的第k个数。注意&#xff1a;m*n>0。 思路&#xff1a; 也是看论文的。一开始也能想到是这种解法&#xff0c;枚…

老web换新枝----Sails.js移动设备的全新生产力(五)

自定义模型操作目前为止&#xff0c;我们的进展非常顺利&#xff0c;我们使用了 Sails 的默认路由来访问或修改模型实例。这些默认设置&#xff08;包含在 Sails Blueprint API 中&#xff09;负责我们期望从 Web 或移动应用程序获得的基本的创建&#xff08;create&#xff09…

linux 驱动没有设备id,linux不同总线的设备和驱动的匹配过程分析

摘自&#xff1a;前几日读书会&#xff0c;谈到linux中driver和device的匹配问题&#xff0c;我认为是通过设备名来匹配的&#xff0c;因为我之前看过platform的驱动&#xff0c;它就是通过设备name和驱动name来进行匹配&#xff0c;所以我确信linux里边所有的驱动和设备都是这…

理解Flight框架核心

看到了这篇分析flight的文章还不错&#xff0c;就转过来了&#xff0c;地址&#xff1a;https://blog.csdn.net/sky_zhe/article/details/38906689 Flight框架&#xff08;官网&#xff09;是一个微型的PHP框架&#xff0c;它简单&#xff0c;快速&#xff0c;可扩展。借助Flig…

安装ISO系统(原版系统)系统终极方法

首先进入PE&#xff0c;在PE下找到你的系统ISO镜像&#xff0c;解压缩&#xff0c;然后将镜像里的boot文件夹、sources文件夹和bootmgr文件提取出来&#xff0c;然后复制到你要安装的分区&#xff08;比如c盘&#xff09;&#xff0c;接下来拔下U盘&#xff0c;重新启动计算机&…

intel i218v千兆网卡 linux驱动,适用于英特尔® 千兆位以太网网络连接的 Linux* 基础驱动程序...

适用于英特尔 千兆位以太网网络连接的 Linux* igb* 基础驱动程序安装说明Linux* igb 驱动程序支持所有基于 82575、82576、82580&#xff0c;I350&#xff0c;I354 和 I210/I211 的英特尔 千兆位以太网网络连接。有关驱动程序配置的详细信息&#xff0c;请参阅下载中心中的自述…

Linux下如何抓取串口码流,linux alsa音频中采样率fs、比特率BCLK 、主时钟MCLK关系...

转&#xff1a;https://blog.csdn.net/lugandong/article/details/72468831一、拿512fs说话&#xff1a;看图知道采样的位深是32bit(位)&#xff0c;左右声道各占了8*32BCLK&#xff0c;那一个完整的LRCLK一共8*32*2512BCLK。其实xxxfs就是这么算出来的&#xff0c;也是固定的&…

第 39 章 ThinkPHP--CURD 操作

学习ThinkPHP 模型中的 CURD 操作&#xff0c;也就是增删改查。通过 CURD&#xff0c; 我们可以方便快速的对数据库进行操作。 1.数据创建 2.数据写入 3.数据读取 4.数据更新 5.数据删除 一&#xff0e;数据创建 在数据库添加等操作之前&#xff0c;我们首先需要对数据进行创建…

洛谷 P1529 回家 Bessie Come Home Label:Dijkstra最短路 乱搞

题目描述 现在是晚餐时间,而母牛们在外面分散的牧场中。 农民约翰按响了电铃,所以她们开始向谷仓走去。 你的工作是要指出哪只母牛会最先到达谷仓(在给出的测试数据中,总会有且只有一只最快的母牛)。 在挤奶的时候(晚餐前),每只母牛都在她自己的牧场上,一些牧场上可能没有母牛。…

linux语言的说明顺序有哪些,(linux常用头文件详解.doc

(linux常用头文件详解linux常用头文件详解POSIX标准定义的头文件??????? 目录项???????? 文件控制??? 文件名匹配类型??? 路径名模式匹配类型??????? 组文件??? 网络数据库操作??????? 口令文件??? 正则表达式??????? TAR归档…

第 39 章 ThinkPHP--视图

学习要点&#xff1a; 1.模版定义 2.赋值和渲染 3.模版地址 4.获取内容 本节课&#xff0c;我们将要学习一下 ThinkPHP 视图&#xff0c;视图是 Web 的可见内容&#xff0c;一般是 HTML 结合 PHP 获取的数据提供给用户使用的部分&#xff0c;属于 MVC 中的 V。 一&#xff0e;模…

mysql日志(介绍 路径修改 备份)

2019独角兽企业重金招聘Python工程师标准>>> 环境&#xff1a;senos6 软件&#xff1a;mysql2.6.20 mysql日志&#xff1a; 错误日志 一般查询日志 慢查询日志 二进制日志 只记录DDL&#xff0c;DML等引起数据库改变的操作都会记录下来 复制&am…

Sort

<?xml version"1.0" encoding"utf-8"?> SortSort 1 Sort Select sort is the simplest sorting alogrithms. 1.1 IDEA 1.find the smallest element in the rest of array 2.exchange the element with with the i th entry. 3.repeat step1 and s…

a标签实现不跳转点击

<a class"tiao" href"./index.php"></a> JS实现无跳转a标签 <script type"text/javascript"> $(".tiao").click(function (){return false; }) </script> 转载于:https://www.cnblogs.com/wenhainan/p/…

linux下的c语言控制灯闪烁,C语言实现LED灯闪烁控制

原标题&#xff1a;C语言实现LED灯闪烁控制/********* 配套 **********/#include //包含 寄存器的头文件/****************************************函数功能&#xff1a;延时一段时间*****************************************/void delay(void) //两个void意思分别为无需返回…

VBA and Access

>>.用vba连接ACESS&#xff1a; Set Conn Server.CreateObject("ADODB.Connection") Conn.ConnectionString"ProviderMicrosoft.Jet.OLEDB.4.0;Data Source" & Server.MapPath("sample.mdb") Conn.Open>>.用vba连接EXCEL,打开EX…

温州大学c语言作业布置的网站,老师APP上布置作业 三年级娃为刷排名半夜做题_央广网...

在温州读小学三年级的皮皮(化名)&#xff0c;因为学习需要&#xff0c;在妈妈黄女士的手机里安装了5个APP学习软件。有数学速算的&#xff0c;英语配音的&#xff0c;还有语文复习的。这些软件&#xff0c;都是班上的老师推荐安装的。每天放学回家&#xff0c;皮皮就拿着黄女士…

Algorithm I assignment Collinear

这本来应该是第三周的作业&#xff0c;但是由于其他作业逼近deadline&#xff0c;暂时推后了一周完成。 这周的assignment大大提高了我对这门课的看法&#xff0c;不得不说&#xff0c;Algorithms这门课的assignment部分设计得很好。为什么好&#xff1f;个人认为有以下几点&am…