#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;
#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::map<int, Person> persons;
persons[123] = Person("Amy");
persons[234] = Person("Ralph");
persons[345] = Person("Simon");
persons[456] = Person("Maggie");
//非lamad::bind 编译有问题?
std::cout << "Ralph's Id is: " <<
std::find_if( persons.begin(), persons.end(),
::lambda::bind(&Person::Name,::lambda::bind(&std::map<int, Person>::value_type::second, ::lambda::_1)) == "Ralph" )->first;
typedef boost::tuple<short,int,long> Mtuple;
std::vector<Mtuple> vec ;
vec= boost::assign::tuple_list_of(3,2,7)(6,2)(7,1)(5,9);
std::cout << "bind tuple: " <<
std::find_if( vec.begin(), vec.end(),
bind(&Mtuple::get<0>,_1) == 7 )->get<1>();
return 0;
}
分享到:
相关推荐
在C++标准库STL中,`std::bind`、`std::tuple`和`std::function`是非常重要的工具,它们提供了高级的函数操作和参数管理能力。下面将详细解释这三个概念及其简单实现的关键点。 首先,我们来看`std::function`。`...
在TR1中,`std::tr1`命名空间引入了一系列重要的工具类,如`shared_ptr`、`function`、`bind`、`mem_fn`以及`tuple`等。 #### `shared_ptr` `shared_ptr`是一种智能指针,用于管理动态分配的对象的生命周期。通过...
comboGrade = tkinter.ttk.Combobox(root, width=50, values=tuple(studentClasses.keys())) ``` 在上面的代码中,我们创建了一个选择框,名称为 `comboGrade`,宽度为 50 个字符,并将其值设置为 `studentClasses` ...
`utility`中还有一些预定义的类型别名,如`std::tuple_size`, `std::tuple_element`等,它们用于元编程,处理`std::tuple`对象。 8. **模板元编程(Template Metaprogramming)** 虽然`utility`不直接涉及模板元...
- **`tr1::tuple`**: 类似于C++11的`std::tuple`,用于存储异构数据集,可以存储不同类型的元素。 - **`tr1::unordered_map` 和 `tr1::unordered_set`**: 提供了基于哈希表的数据结构,提供了快速的插入、查找和...
fatalerror99 array, bind & mem_fn, dynamic_bitset, function, functional/hash, in_place_factory & typed_in_place_factory, lambda, ref, smart_ptr, static_assert, string_algo, type_traits, typeof ...
使用socket中的struck来实现客户端发送 服务端: 客户端: # -*- coding: UTF-8 -*- ...s.bind((host, port)) # 绑定需要监听的Ip和端口号,tuple格式 s.listen(1) def conn_thread(connection,
3. **函数对象与高级编程**:如`bind`、`lambda`、`function`等。 每部分下面又包含了多个具体的子库,每个子库针对特定的问题域提供解决方案。 ### 重要知识点详解 #### Smart_ptr库 - **Smart_ptr如何改进程序...
3.2 Boost.Bind 3.3 Boost.Ref 3.4 Boost.Function 3.5 Boost.Lambda 3.6 Exercises Chapter 4: Event Handling 4.1 General 4.2 Signals 4.3 Connections 4.4 Exercises Chapter 5: String Handling 5.1 General ...
- **Tuple**:提供了一种将多个值组合在一起的方式,每个位置上的元素可以是不同的类型。 #### Bind库 - **Bind**:支持将函数或成员函数与部分参数绑定。 #### Lambda库 - **Lambda**:允许创建临时函数对象,...
Boost库的核心目标是推动C++标准的发展,并且很多Boost库最终被纳入到了C++标准库中,例如`shared_ptr`、`unique_ptr`、`bind`、`lambda`、`variant`和`tuple`等。下面将详细探讨一些在`boost_1_34_0`中重要的库和...
比如`auto Get()->decltype(std::tie(age,name))`,它自动推导`Get`函数返回类型为`std::tuple, std::string>`。 接着,文档探讨了C++11中`lambda`表达式的使用,它为编写匿名函数提供了极大的便利。相较于传统的...
例如,`std::less`和`std::greater`用于比较元素,`std::bind1st`和`std::bind2nd`用于绑定函数参数。 4. **算法**:STL包含了一整套强大的算法库,如排序(sort)、查找(find)、复制(copy)、合并(merge)、...
Computer Networking: A Top-Down Approach, 6th Edition Solutions to Review Questions and Problems Version Date: May 2012 ...This document contains the solutions to review questions and problems for...
Boost在这一领域也贡献颇多,其中最为人熟知的是`boost::array`、`boost::multi_array`、`boost::tuple`、`boost::variant`等容器。这些容器提供了更灵活的选择,比标准库中的容器更加多样化,能够满足不同场景下的...
此外,还引入了`std::tr1`,这是对C++标准库的扩展,包含了如`shared_ptr`、`weak_ptr`等智能指针,以及函数对象绑定器`bind`和`tuple`等新组件,为泛型编程提供了更多支持。 再者,C++2003标准对模板进行了扩展,...
新增了关于如何部署包含内嵌依赖程序集的单一文件的一节,以及比较反射调用、bind/invode、bind/create、delegate/invoke、C#动态类型的一节。 Chapter 24-Runtime Serialization 全新的一章。 Part V – ...