4.Boost之ref



1.Boost之ref,案例:

#include<iostream>

#include
<vector>

#include
<boost/bind.hpp>

#include
<boost/function.hpp>

 

using
namespace
std;

using
namespace
boost;

 

void
print(std::ostream
&os,int
i)

{

   
os <<
i <<
endl;

}

 

void
main()

{

   
//不可以拷贝的对象可以用ref的方式,入下面cout是系统的对象

   
//print中的第一个参数是ostream,引用系统的cout,所以用boost::ref(cout)

   
boost::function<void(int)>
pt =
boost::bind(print,
boost::ref(cout),
_1);

   
vector<int>
v;

   
v.push_back(11);

   
v.push_back(12);

   
v.push_back(13);

 

   
//下面的pt只需要在传递一个参数即可,通过迭代的方式传入一个参数的

   
for_each(v.begin(),
v.end(),
pt);

 

   
std::cin.get();

}

 

 

 

时间: 2024-09-21 23:34:46

4.Boost之ref的相关文章

Boost简介

来源:http://www.cnblogs.com/wangkangluo1/archive/2012/05/28/2521493.html 原文链接 一BOOST Boost带领你远远地超越了C++标准库,它使得C++编程更优雅.更有活力.更高产.(引自:Beyond the C++ Standard Library: An Introduction to Boost)(慢慢体会哦!) 二参考 主要: boost的在线document:http://boost.org/libs/librari

关于boost::bind中fstream对象禁止拷贝的解决方法

fstream的拷贝构造函数是私有的,禁止fstream对象的拷贝. 比如,下面的程序编译出错,提示拷贝构造函数私有: #include<fstream> #include<iostream> #include<boost/thread/thread.hpp> using namespace std; void fun(ofstream &out) { std::cout<<"succeed!"<<endl; } in

【C/C++学院】0904-boost智能指针/boost多线程锁定/哈希库/正则表达式

boost_array_bind_fun_ref Array.cpp #include<boost/array.hpp> #include <iostream> #include <string> using namespace std; using namespace boost; void mainA () { array <int, 5> barray = { 1, 2, 3, 4, 5 }; barray[0] = 10; barray.at(4)

Boost学习之正则表达式--regex

来源:http://blog.chinaunix.net/uid-21222282-id-1829265.html 来源:http://www.cnblogs.com/undermoon/archive/2009/11/30/1613508.html 来源:http://blog.csdn.net/guyulongcs/article/details/7838753 来源:http://blog.csdn.net/leonardwang/article/details/6035171 boost

Boost::thread库的使用

阅读对象 本文假设读者有几下Skills [1]在C++中至少使用过一种多线程开发库,有Mutex和Lock的概念. [2]熟悉C++开发,在开发工具中,能够编译.设置boost::thread库. 环境 [1]Visual Studio 2005/2008 with SP1 [2]boost1.39/1.40   概要 通过实例介绍boost thread的使用方式,本文主要由线程启动.Interruption机制.线程同步.等待线程退出.Thread Group几个部份组成. 正文 线程启动

使用Boost.Asio编写通信程序

摘要:本文通过形像而活泼的语言简单地介绍了Boost::asio库的使用,作为asio的一个入门介绍是非常合适的,可以给人一种新鲜的感觉,同时也能让体验到asio的主要内容.   Boost.Asio是一个跨平台的网络及底层IO的C++编程库,它使用现代C++手法实现了统一的异步调用模型. ASIO的同步方式 ASIO库能够使用TCP.UDP.ICMP.串口来发送/接收数据,下面先介绍TCP协议的读写操作.对于读写方式,ASIO支持同步和异步两种方式,首先登场的是同步方式,下面请同步方式自我介绍

2.Boost之bind

 1.Boost:bind #include <iostream> #include <boost/bind.hpp>   using namespace std; using namespace boost;   int f(int a, int b = 12) {     return a + b; }   int g(int a, int b, int c) {     return a + b + c; }   int main(int argc, char *argv

boost asio io_service学习笔记

构造函数 构造函数的主要动作就是调用CreateIoCompletionPort创建了一个初始iocp. Dispatch和post的区别 Post一定是PostQueuedCompletionStatus并且在GetQueuedCompletionStatus 之后执行. Dispatch会首先检查当前thread是不是io_service.run/runonce/poll/poll_once线程,如果是,则直接运行. poll和run的区别 两者代码几乎一样,都是首先检查是否有outstan

Boost::Thread 多线程的基础知识

Boost.Thread可以使用多线程执行可移植C++代码中的共享数据.它提供了一些类和函数来管理线程本身,还有其它一些为了实现在线程之间同步数据或者提供针对特定单个线程的数据拷贝.头文件:#include <boost/thread.hpp> 线程定义boost::thread 类是负责启动和管理线程.每个boost::thread对象代表一个单独的执行线程,是不可拷贝的.由于它是可以被移动到,所以它们可以被保存到会改变大小的容器中,并且从函数返回.这使得线程创建的详细信息可以被封装到一个函