C++ STD函数

 
inner_product是c++标准库封装的一个函数。
函数原型:
     函数1: inner_product(beg1, end1, beg2, init)
     函数2: inner_product(beg1, end1, beg2, init, BinOp1, BinOp2)
函数介绍:
      返回作为两个序列乘积而生成的元素的总和。步调一致地检查两个序列,将
    来自两个序列的元素相乘,将相乘的结果求和。由 init 指定和的初值。假定从
    beg2 开始的第二个序列具有至少与第一个序列一样多的元素,忽略第二个序列
    中超出第一个序列长度的任何元素。init 的类型决定返回类型。
  函数1: inner_product(beg1, end1, beg2, init)
     使用元素的乘操作符(*)和加操作符(+)。
   如:给定两个序列 2,3,5,8和 1,2,3,4,5,6,7,结果是初值加上下面的乘积对:
     return initial_value + (2 * 1) + (3 * 2) + (5 * 3) + (8 * 4)  // 如果提供初值 0,则结果是 55。
  函数2:应用指定的二元操作,使用第一个操作代替加而第二个操作代替乘。
   如:给定两个序列 2,3,5,8和 1,2,3,4,5,6,7
      结果是:initial * 2 + 1 * 3 + 2 * 5 + 3 * 8 + 4   //即使加变乘,乘变加
测试代码:

#include <numeric>
#include <iterator>
#include <ostream>
#include <iostream>
#include <list>

using namespace std;

using namespace std;

int main(){

list<int> coll;
coll.push_back(1,2,3,4,5,6);

list<int>::iterator i;

for(i=coll.begin();i!=coll.end();i++)
cout<<*i<<" ";

cout<<"inner reverse product:"<<inner_product(coll.begin(),coll.end(),coll.begin(),0)<<endl;//(0+1×1 +2×2 +3×3+4×4+5*5+6*6)

cout<<"inner reverse product:"<<inner_product(coll.begin(),coll.end(),coll.rbegin(),0)<<endl;//(0+1×6 +2×5+3×4+4×3+5*2+6*1)

//(1* 1+1 * 2+2 * 3+3 * 4+4 * 5+5 * 6+6)
cout<<"product of sums:"<<inner_product(coll.begin(),coll.end(),coll.begin(),1,multiplies<int>(),plus<int>())<<endl;

return 0;
}

 结果: 1 2 3 4 5 6 inner reverse product:91
inner reverse product:56
product of sums:46080
 
 

C++ STD inner_product函数的更多相关文章

  1. C/C++ 错误笔记-解决swap函数与标准库的std::swap函数冲突的问题

    下午写了一份代码: #include <iostream> using namespace std; // 模板1:交换基本类型的值 template<typename T> ...

  2. 一文带你详细介绍c++中的std::move函数

    前言 在探讨c++11中的Move函数前,先介绍两个概念(左值和右值) 左值和右值 首先区分左值和右值 左值是表达式结束后依然存在的持久对象(代表一个在内存中占有确定位置的对象) 右值是表达式结束时不 ...

  3. C++ STD accumulate函数

    1. 介绍 用来计算特定范围内(包括连续的部分和初始值)所有元素的和,除此之外,还可以用指定的二进制操作来计算特定范围内的元素结果.其头文件在numeric中. 用次函数可以求和,构造前n项和的向量, ...

  4. 右值引用和std::move函数(c++11)

    1.对象移动 1)C++11新标准中的一个最主要的特性就是移动而非拷贝对象的能力 2)优势: 在某些情况下,从旧内存拷贝到新内存是不必要的,此时对对象进行移动而非拷贝可以提升性能 有些类如IO类或un ...

  5. std::function与std::bind 函数指针

    function模板类和bind模板函数,使用它们可以实现类似函数指针的功能,但却却比函数指针更加灵活,特别是函数指向类 的非静态成员函数时. std::function可以绑定到全局函数/类静态成员 ...

  6. std::thread函数传参拷贝次数

    c++11的thread库大大方便了开发,但是目前网络上少有深入分析的资料和使用例程.特别是在线程函数传参这一块,一般止步于使用std::ref传引用. 这次写服务器遇到个BUG,线程函数参数是智能指 ...

  7. std::function"函数"对象包装器

    语义: 类模板std::function是可调用对象的包装器,可以包装除了类成员之外的所有可调用对象.包括,普通函数,函数指针,lambda,仿函数.通过指定的模板参数,它可以用统一的方式保存,并延迟 ...

  8. std::back_inserter函数用法

    back_inserter函数:配合copy函数,把[a, b)区间的数据插入到string对象的末尾,如果容量不够,动态扩容. 使用案例: 1.客户端与服务器通信场景:服务器向客户端发送数据,客户端 ...

  9. std::lexicographical_compare函数的使用

    按照词典序比较前者是否小于后者. 当序列<first1, last1>按照字典序比较小于后者序列<first2, last2>,则返回true.否则,返回false. 所谓字典 ...

随机推荐

  1. linux sar 命令详解(转载)

    linux sar 命令详解 2013-04-01 11:05 [小 大] 来源: 开源中国社区 评论: 0 分享至: 百度权重查询 词库网 网站监控 服务器监控 SEO监控 手机游戏 iPhone游 ...

  2. S全选功能代码

    JS全选功能代码优化 2014-06-26 00:00 by 龙恩0707, 470 阅读, 3 评论, 收藏, 编辑 JS全选功能代码优化 最近在看javascript MVC那本书,也感觉到自己写 ...

  3. Android中的dp,px以及wrap_content的实际展示效果

    因为一个效果中的图片设置了wrap_content的属性,但在720dp跟540dp上面显示不一致使老大非常恼火.跟他讲也讲不明白.于是乎让我们彼此测试来探个究竟.首先测试的是个图片: 它的物理像素是 ...

  4. 依赖注入和IOC

    http://www.bbsmvc.com/archiver/csharp/thread-831-1.html 本来想使用一下Ninject的,然后搜索了很久,都没找到比较详细的关于Ninject的使 ...

  5. Extjs树形控件入门

    Extjs树形控件由Ext.tree.TreePanel类定义,控件的名称为TreePanel,TreePanel继承自Panel类,在Extjs中使用树形控件其实很简单. 大家知道要使用Extjs必 ...

  6. ASP.NET开发的大型网站有哪些架构方式

    谈谈用ASP.NET开发的大型网站有哪些架构方式(成本) 在上篇文章里(http://www.cnblogs.com/ms0017/archive/2011/07/26/2117676.html),列 ...

  7. 用户故事(User Story)

    用户故事(User Story)       用户故事是描述对用户有价值的功能,好的用户故事应该包括角色.功能和商业价值三个要素.用户故事通常的格式为:作为一个<角色>, 我想要<功 ...

  8. 关于readonly

    当某个字段是引用类型,且该字段是readonly类型时,那么不可改变的是引用,而非引用的对象.如以下代码: public sealed class AType { public static read ...

  9. C# 读取 vCard 格式

    办公室里有时忙起来,会频繁进入这样一个循环,想找某个人的电话-去找名片-找不到名片-去查看手机-手机按解锁开关-手机滑屏/指纹/密码/图形解锁-手机按通话按键-输入那个人姓名的部分-找到电话-输入到P ...

  10. javascript full screen 全屏显示 页面元素

    javascript full screen 全屏显示 页面元素 要想让页面的某个元素全屏显示,就像在网页上看视频的时候,可以全屏观看一样,该怎么实现呢? 一种最简单的方式,就是动态改变你想要全屏显示 ...