`
lunan
  • 浏览: 78669 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

STL 累加

    博客分类:
  • STL
 
阅读更多

/*其中的 std::plus<int>() 可以省略,因为这将是3个参数的 accumulate 的默认行为 */

 

#include "stdafx.h"

#include <string> 
#include <iostream> 
#include <numeric>
#include <vector> 
#include <algorithm> 
#include <functional> 
#include <map>

#include "boost/tuple/tuple.hpp" 
#include "boost/tuple/tuple_comparison.hpp" 
#include "boost/tuple/tuple_io.hpp" 

#include "boost/array.hpp" 
#include "boost/assign/list_of.hpp" 

#include <boost/lambda/lambda.hpp>
#include <boost/lambda/bind.hpp>
using namespace boost::lambda;

//#include <boost/bind.hpp>

class Person
{
public:
	Person(){}
	Person(const std::string& name) : name_(name){}

	std::string& Name()
	{ return name_; }

private:
	std::string name_;
};

int main()
{
	std::vector<int> vect1(4);
	int i = 0;
	std::for_each( vect1.begin(), vect1.end(), _1 = ++var(i) );

	std::cout << "1. int Accumulate: " <<
		std::accumulate( vect1.begin(), vect1.end(), 0, std::plus<int>()) << '\n';

	std::vector<std::string> vect;
	vect.push_back("1");
	vect.push_back("2");
	vect.push_back("3");
	vect.push_back("4");

	std::cout << "2. str Accumulate: " <<
		std::accumulate( vect.begin(), vect.end(), std::string("0")) << '\n';

	std::cout << "3. str Accumulate: " <<
		std::accumulate( vect.begin(), vect.end(), std::string("0"),bind(std::plus<std::string>(),boost::ref(_1),_2+",")) << '\n';

	std::cout << "4. for_each Accumulate: ";
	std::string result("0");
	std::for_each( vect.begin(), vect.end(), result +=  "," +_1 );
	std::cout << result << '\n';

	std::cout << "-------------------------------------"<< '\n';

	std::map<int, std::string> persons;
	persons[123] = "Amy";
	persons[234] = "Ralph";
	persons[345] = "Simon";
	persons[456] = "Maggie";

	std::cout << "5. map Accumulate: " <<
	std::cout << std::accumulate( persons.begin(), persons.end(), 0,
		bind(std::plus<int>(), _1, bind(&std::map<int, std::string>::value_type::first, _2)) )
		<< '\n';

	std::cout << "6. map Accumulate: " <<
	std::cout << std::accumulate( persons.begin(), persons.end(), std::string(),
		bind(std::plus<std::string>(), _1, bind(&std::map<int, std::string>::value_type::second, _2)) +"," )
		<< '\n';

   std::cout << "-------------------------------------"<< '\n';

   std::map<int, Person> persons1;
   persons1[123] = Person("Amy");

   result = "";
   std::for_each( persons1.begin(), persons1.end(), 
	   result += bind(&Person::Name, bind(&std::map<int, Person>::value_type::second, _1)));

   std::cout << "7. map Accumulate: " <<
   std::cout << result << '\n';
	return 0;
}
 
分享到:
评论

相关推荐

    node-stl.zip_.stl文件_STL文件_stl 体积_stl模型_体积 STL

    如果被包围,那么这个六面体的体积就会被累加到总体积中。这个过程可以通过编程语言如Node.js来实现,这也是"node-stl.zip"可能提供的功能,它可能是一个用于处理和分析STL文件的Node.js库。 在实际应用中,除了...

    stl_STL_二进制stl_体积_源码

    STL(STereoLithography)格式是一种广泛用于3D打印和计算机辅助设计(CAD)的文件格式。它主要存储三维几何数据,分为文本STL和二进制STL两种形式。二进制STL文件通常比文本STL更小、加载更快,但可能不那么易于人...

    STL指令集.pdf

    STL指令集覆盖了广泛的指令类型,包括位逻辑指令、比较指令、转换指令、计数器指令、数据块指令、逻辑控制指令、数学运算指令(包括整型和浮点数)、装载和传送指令、程序控制指令、移位和循环指令、定时器指令、字...

    1500 STL 指令用法.pdf

    该操作可以在程序控制中用于实现计数功能,例如计数、累加、累减等。 比较器运算 比较器运算是 STL 指令语言中的一种基本操作,用于执行比较运算。该操作包括大于、小于、等于、不等于、大于或等于、小于或等于等...

    语句表(STL)编程参考手册.pdf

    手册内容包含各类STL指令的描述和编程实例,例如位逻辑指令、比较指令、转换指令、计数器指令、数据块指令、逻辑控制指令、整型和浮点型数学运算指令、装载和传送指令、程序控制指令、移位和循环指令、定时器指令、...

    西门子内部教材-STL语言编写讲解

    西门子STL语言,全称Structured Text,是一种在PLC编程中常见的高级文本编程语言,主要用于西门子S7系列控制器。STL语言结构清晰,语法严谨,适合编写复杂的控制逻辑。以下是对STL语言及其相关知识点的详细说明: 1...

    西门子S7-300语句表(STL)编程手册

    这些语言元素包含了位逻辑指令、比较指令、转换指令、计数器指令、数据块指令、逻辑控制指令、整数和浮点算术运算指令、装入和传送指令、程序控制指令、移位和循环移位指令、定时器指令、字逻辑指令、累加器操作指令...

    STL学习代码示例

    根据给定的信息,我们可以深入探讨STL(Standard Template Library,标准模板库)中的几个关键概念与函数用法。STL是C++中的一个重要组成部分,它提供了丰富的数据结构和算法,可以极大提高编程效率。 ### STL简介 ...

    STL和常用算法简介

    - `accumulate`:累加容器中的所有元素。 此外,还有一些高级算法,如动态规划、回溯算法和贪心算法,虽然它们不是STL的一部分,但在解决复杂问题时非常有用。 #### 七、STL程序示例 以下是一个使用STL组件的示例...

    STL,STL_doc

    4. 算法:STL提供了一组通用的算法函数,如`sort`(排序)、`find`(查找)、`transform`(转换)和`accumulate`(累加)。这些算法可以应用于任何支持迭代器的容器。 5. 功能对象(Functors):也称为仿函数,是...

    如何读STL程序西门子PLC

    ### 如何阅读STL程序(西门子PLC) #### 概述 在自动化与驱动领域,可编程逻辑控制器(PLC)是实现工业过程控制的核心设备之一。西门子PLC广泛应用于各种自动化系统中,其中STL(Statement List)是一种基于文本的...

    关于STL基础详细介绍

    - **numeric algorithms**:数值算法,如累加、累乘、求平均值等。 - **容器适配器**:如`stack`(栈)、`queue`(队列)和`priority_queue`(优先队列),它们是基于其他容器实现的特定接口。 STL通过模板元编程...

    STL编程教程

    ### STL编程教程知识点详解 #### 一、STL编程概览 - **定义与作用**:STL(Statement List)是一种编程语言,主要用于为西门子S7-300和S7-400系列PLC编写控制程序。它符合IEC 1131-3标准中定义的“指令表”语言类型...

    STL参考手册.zip

    6. **数学算法**:如`accumulate()` 计算累加和,`min_element()` 和 `max_element()` 找到最小和最大元素。 四、函数对象(Function Objects) 函数对象,也称为仿函数,是具有操作行为的对象,常用于算法中的谓词。...

    SIMATIC S7-300和S7-400语句表STL编程手册.pdf

    14. **累加器指令**:使用累加器进行多次计算,常用于累加和累乘。 15. **编程实例**:通过具体的例子展示如何使用这些指令。 16. **参数传送**:关于如何在程序中传递参数的说明。 手册还包含了所有STL指令的...

    STL简析 精心整理 经典 很全

    - **聚合操作**:如`accumulate`、`inner_product`、`reduce`等,对容器元素进行累加、乘积等计算。 - **变换和复制**:如`transform`、`copy`、`swap`,对元素进行转换或在容器间复制。 - **容器操作**:如`...

    S7-300语句表(STL)编程手册

    14. **累加器操作指令**:用于累加器的特殊操作,如累加器清零(CLR_A)等。 #### 四、编程示例与安全指南 - **编程示例**:手册中提供了实际的编程案例,帮助读者更好地理解和应用STL编程语言。 - **安全指南**:...

    西门子STL介绍

    ### 西门子STL介绍 #### 一、STL编程语言概述 STL(Statement List)编程语言,又称语句表或指令列表,是一种基于文本的编程方式,广泛应用于可编程逻辑控制器(PLC)的编程当中。西门子STL作为西门子PLC的一种编程...

Global site tag (gtag.js) - Google Analytics