tuple bind

#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;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值