关于std::function [问题点数:40分,结帖人lucifer886]

Bbs2
本版专家分:191
结帖率 59.09%
Bbs12
本版专家分:380843
Blank
状元 2017年 总版技术专家分年内排行榜第一
Blank
榜眼 2014年 总版技术专家分年内排行榜第二
Blank
探花 2013年 总版技术专家分年内排行榜第三
Blank
进士 2018年总版新获得的技术专家分排名前十
2012年 总版技术专家分年内排行榜第七
Bbs8
本版专家分:40023
Blank
蓝花 2014年11月 C/C++大版内专家分月排行榜第三
Bbs7
本版专家分:14267
Blank
黄花 2015年7月 C/C++大版内专家分月排行榜第二
2015年2月 C/C++大版内专家分月排行榜第二
2014年12月 C/C++大版内专家分月排行榜第二
Blank
蓝花 2015年8月 C/C++大版内专家分月排行榜第三
2015年5月 C/C++大版内专家分月排行榜第三
2015年3月 C/C++大版内专家分月排行榜第三
2015年1月 C/C++大版内专家分月排行榜第三
Bbs2
本版专家分:191
C++ std::function的用法
我想实现<em>std</em>::<em>function</em>定义的函数类型可以传递参数。rn参数类型设置为void的时候,语法是没有错的:rnrn```rn typedef <em>std</em>::<em>function</em> TestFunc;rnrnclass Testrnpublic:rn void setFunc(TestFunc f) fn = f; rnprivate:rn TestFunc fn;rn;rnrnvoid test()rn Test t;rn t.setFunc(func);rnrnrnvoid func()rn /*………………*/rnrnrn```rn***rn有参数的时候会报语法错误:rnrn```crn typedef <em>std</em>::<em>function</em> TestFunc;rnrnclass Testrnpublic:rn void setFunc(TestFunc f) fn = f; rnprivate:rn TestFunc fn;rn;rnrnvoid test()rn Test t;rn t.setFunc(func);rnrnrnvoid func(int i,int j)rn /*………………*/rnrn```rnrn**显示错误信息**:rn`不存在从 "void (int i, int j)" 转换到 "<em>std</em>::<em>function</em>" 的适当构造函数`rnrn请问这是为什么啊~
std::function简单的理解
对<em>std</em>::<em>function</em>的简单实用的理解。
function不是std的成员
请问各位前辈 :rn “<em>function</em>” : 不是“<em>std</em>”的成员,如何解决? 网上的一段代码,我拷过来学习下,我是vs2003环境rnusing namespace <em>std</em>;rnrn#include "TestInfo.h"rn#include rnrn#include rn#include rn#include rn#include rn#include rnrn/**rn* @brief 测试基础类。rn*rn*/rnclass TestBaseEXrnrnpublic:rnrn typedef <em>std</em>::<em>function</em> TestFun;rn /**rn * @brief 执行测试。rn * @param[in] testShow 测试结果展示函数rn *rn */rn void OnTest(<em>std</em>::<em>function</em> testShow)rn rn for (auto it = m_Tests.begin(); it != m_Tests.end();rn ++it)rn rn TestInfo info; rn tryrn rn bool result = (*it)(info);rn if (info.isWantException)rn rn info.isOK = false;rn rn elsern rn info.isOK = result;rn rn rn catch (...)rn rn info.exception = "有异常";rn if (info.isWantException)rn rn info.isOK = true;rn rn rn testShow(info);rn rn rnpublic:rn <em>std</em>::vector m_Tests;rn;rn
求大神 std::bind std::function的问题
#include rn#include rn#include rnrnvoid test_fun(const double d)rnrn <em>std</em>::cout << "double:" << d << <em>std</em>::endl;rnrnrnrnrnvoid test1(<em>std</em>::<em>function</em> ff)rnrn <em>std</em>::cout << "ff:" ;rn <em>std</em>::cout << <em>std</em>::endl;rn ff(1.1);rnrnrnint main()rnrn <em>std</em>::<em>function</em> f1 = test_fun;rn <em>std</em>::<em>function</em> ff = <em>std</em>::bind(test1, f1);rn ff();rn return 0;rnrn编译错误:不会计算为接受 1 个参数的函数rnrn但是改成这样就可以rn#include rn#include rn#include rnrnvoid test_fun(const double d)rnrn <em>std</em>::cout << "double:" << d << <em>std</em>::endl;rnrnrnrnrnvoid test1(<em>std</em>::<em>function</em> ff)rnrn <em>std</em>::cout << "ff:" ;rn <em>std</em>::cout << <em>std</em>::endl;rn ff(1.1);rnrnrnint main()rnrn <em>std</em>::<em>function</em> f1 = test_fun;rn auto ff = <em>std</em>::bind(test1, f1);rn ff();rn return 0;rn
请问一个std::function的问题
请问如果我建立一个空的<em>std</em>::<em>function</em>,比如:rnrn<em>std</em>::<em>function</em> fun;rnrn然后调用:rnfun();rnrn这样可不可以? 会发生什么事情?
std::function的本质和使用特性
<em>std</em>::<em>function</em>的本质和使用特性
现代C++的回调技术--使用std::bind和std::function
最近在读完陈硕大牛的《Linux多线程服务端编程》以及muduo源码后,对其中的一些实现细节有着十分深刻的印象,尤其是使用<em>std</em>::bind和<em>std</em>::<em>function</em>的回调技术。可以说,这两个大杀器简直就是现代C++的“任督二脉”,甚至可以解决继承时的虚函数指代不清的问题。在此详细叙述使用<em>std</em>::bind和<em>std</em>::<em>function</em>在C++对象之间的用法,用以配合解决事件驱动的编程模型。
请教一下Qt里面的std::function std::bind
最近重新在学习Qt,看到了一个用Qt写的天气预报例子。rn里面用到了一些<em>std</em>::<em>function</em> <em>std</em>::bind的地方,有点似是而非,请教一下大家。rnrn这是管理获取城市列表,天气的一个类。rnrnrntypedef <em>std</em>::<em>function</em> OnMessage; //这里定义了这么一个函数.rnrnclass CityManager : public QObjectrnrn Q_OBJECTrnrnpublic:rn CityManager(QObject *parent = 0);rnrn void getSupportProvince(const OnMessage &msg);rn void getSupportCity(const QString &provinceName, const OnMessage &msg);rn rnrnprivate slots:rn void replyFinished(QNetworkReply *);rnrnprivate:rn QNetworkAccessManager *net_;rn OnMessage onMessage_;rn;rnrnrn然后,实现函数里面都这样使用的。rnrnvoid CityManager::getSupportProvince(const OnMessage &msg)rnrn onMessage_ = msg; //这里是把当成了函数指针?rn QUrl url("http://www.webxml.com.cn/WebServices/WeatherWebService.asmx/getSupportProvince?");rn QNetworkRequest request(url);rn net_->get(request);rnrnvoid CityManager::replyFinished(QNetworkReply *reply)rnrn ......rn while (!reader.atEnd()) rn reader.readNext();rn if (reader.isStartElement()) rn if (reader.name() == "string") rn list.append(reader.readElementText());rn rn rn rnrn if (onMessage_) rn onMessage_(list);rn rn rnrnrnrnvoid Dialog::onProvinces(const QStringList &strList)rnrn QStringList::const_iterator citer = strList.constBegin();rn for ( ; citer != strList.constEnd(); ++citer) rn ui->provinces->addItem(*citer);rn rn ui->provinces->setCurrentIndex(0);rn cityManager_.getSupportCity(ui->provinces->currentText(), <em>std</em>::bind(&Dialog::onCitys, this, <em>std</em>::placeholders::_1));rnrnrn//这里,我看到又用<em>std</em>::bind来绑定了dialog里面的onProvinces函数,这里是不是说list已经被 onMessage获取了?rn cityManager_.getSupportProvince(<em>std</em>::bind(&Dialog::onProvinces, this, <em>std</em>::placeholders::_1));rnrn有点乱,就是不是很理解list是怎么从replyfinished里面获取的。
c++自定义消息管理机制升级版(std::bind && std::function
自从上次写完借(chao)鉴(xi)cocos2dx的消息管理机制之后,也在实际中试着用了几次,只能说对于继承Ref基类方面,一直是最大的不足之处,而后更是遇到了一个问题,使我不得不抛弃这个方式,转而寻找别的方法。       问题(bug):在多重继承中,对于子类如果是先继承别的类,在订阅消息强转成Ref类型指针时,由于c++对象的结构,强转过程中会发生地址偏移,同时在调用时对象每个成
使用std::functionstd::bind实现局部函数做回调
昨日的求教得到了大家的热烈回应,除了要我解释友圈封面之外,也有很多牛人给了很棒的指导意见,其中最为有效的是说使用<em>std</em>::<em>function</em>加<em>std</em>::bind,今晚我就实验一下.          这两个东西是c++11的东西,<em>std</em>::<em>function</em>,抄袭别人的理解就是: 对C++中各种可调用实体(普通函数、Lambda表达式、函数指针、以及其它函数对象等)的封装,形成一个新的可调用的st
C++11新特性应用--实现延时求值(std::functionstd::bind)
说是延时求值,注意还是想搞一搞<em>std</em>::<em>function</em>和<em>std</em>::bind。之前博客《C++11新特性之<em>std</em>::<em>function</em>》注意是<em>std</em>::<em>function</em>如何实现回调函数。现在就算是补充吧,再把<em>std</em>::bind进行讨论讨论。何为Callable Objects? 即可调用对象,比如函数指针、仿函数、类成员函数指针等都可称为可调用对象。对象包装器 Function wrapper
《深入应用C++11》笔记-std::function和bind
上一篇:《深入理解C++11》笔记-Unicode编码支持和原生字符串字面量 接下来的内容将会补充在《深入理解C++11》书中没有涉及的一些比较常用的特性,内容取自《深入应用C++11》。 在C++中,存在“可调用对象(Callable Objects)”这么一个概念。准确来说,可调用对象有如下几种定义: 是一个函数指针。 是一个具有operator()成员函数的类对象(仿函数)。 是一个...
C++11 学习笔记 std::function和bind绑定器
一.<em>std</em>::<em>function</em>       C++中的可调用对象虽然具有比较统一操作形式(除了类成员指针之外,都是后面加括号进行调用),但定义方法五花八门。为了统一泛化函数对象,函数指针,引用函数,成员函数的指针的各种操作,让我们可以按更统一的方式写出更加泛化的代码,C++11推出了<em>std</em>::<em>function</em>。   <em>std</em>::<em>function</em>是可调用对象的包装器。它是一个类模板,可以容
std::function的大小为何是24字节?
在32位windows上面,指针的大小就是32(size_t),但是我发现<em>std</em>::<em>function</em>却是24字节。 rn如果<em>function</em>只是一个对于函数指针的包装,那么它为什么相当于6个函数指针大小? 它还存储了哪些信息呢? rnrn即使是看源代码,VC10的里面,模板类<em>function</em>里面我没有发现有数据成员啊,就是一堆函数而已。它到底是怎么保存函数指针和functor的? 奇怪了,sizeof竟然还是24,如下,我摘了代码过来: rn它的私有成员都在哪里呢? rn rn我对比了一下boost,boost::<em>function</em>也没有看到有成员变量。boost::<em>function</em>竟然是32,比VC的实现还要大。这究竟是为什么?rnrnVC的源代码:rn[code=C/C++]rntemplate rn class <em>function</em> rn : public _Get_<em>function</em>_impl::_Type rn // wrapper for callable objects rnpublic: rn typedef <em>function</em> _Myt; rn typedef typename _Get_<em>function</em>_impl::_Type _Mybase; rn rn <em>function</em>() rn // construct empty <em>function</em> wrapper rn this->_Reset(); rn rn rn <em>function</em>(const _Myt& _Right) rn // construct holding copy of _Right rn this->_Reset((const _Mybase&)_Right); rn rn rn template rn <em>function</em>(_Fx _Func _NOT_INTEGRAL(_Fx)) rn // construct wrapper holding copy of _Func rn this->_Reset(_Func); rn rn rn template rn <em>function</em>(_Fx _Func _NOT_INTEGRAL(_Fx), const _Alloc& _Ax) rn // construct wrapper holding copy of _Func rn this->_Reset_alloc(_Func, _Ax); rn rn rn template rn <em>function</em>(reference_wrapper _Func) rn // construct wrapper holding reference to_Func rn this->_Reset(_Func); rn rn rn template rn <em>function</em>(reference_wrapper _Func, const _Alloc& _Ax) rn // construct wrapper holding reference to_Func rn this->_Reset_alloc(_Func, _Ax); rn rn rn <em>function</em>(_Unutterable) rn // construct empty <em>function</em> wrapper from null pointer rn this->_Reset(); rn rn rn #if defined(_NATIVE_NULLPTR_SUPPORTED) \ rn && !defined(_DO_NOT_USE_NULLPTR_IN_STL) rn <em>function</em>(int) rn // construct empty <em>function</em> wrapper from null pointer rn this->_Reset(); rn rn #endif /* defined(_NATIVE_NULLPTR_SUPPORTED) etc. */ rn rn ~<em>function</em>() rn // destroy the object rn this->_Tidy(); rn rn rn _Myt& operator=(const _Myt& _Right) rn // assign _Right rn if (this != &_Right) rn // clean up and copy rn this->_Tidy(); rn this->_Reset((const _Mybase&)_Right); rn rn return (*this); rn rn rn <em>function</em>(_Myt&& _Right) rn // construct holding moved copy of _Right rn this->_Resetm((_Mybase&)_Right); rn rn rn _Myt& operator=(_Myt&& _Right) rn // assign by moving _Right rn if (this != &_Right) rn // clean up and copy rn this->_Tidy(); rn this->_Resetm((_Mybase&)_Right); rn rn return (*this); rn rn rn template rn _Myt& operator=(_Fx _Func _NOT_INTEGRAL(_Fx)) rn // assign <em>function</em> object _Func rn this->_Tidy(); rn this->_Reset(_Func); rn return (*this); rn rn rn <em>function</em>& operator=(_Unutterable) rn // clear <em>function</em> object rn this->_Tidy(); rn this->_Reset(); rn return (*this); rn rn rn #if defined(_NATIVE_NULLPTR_SUPPORTED) \ rn && !defined(_DO_NOT_USE_NULLPTR_IN_STL) rn <em>function</em>& operator=(int) rn // clear <em>function</em> object rn this->_Tidy(); rn this->_Reset(); rn return (*this); rn rn #endif /* defined(_NATIVE_NULLPTR_SUPPORTED) etc. */ rn rn template rn _Myt& operator=(reference_wrapper _Func) rn // assign wrapper holding reference to_Func rn this->_Tidy(); rn this->_Reset(_Func); rn return (*this); rn rn rn template rn void assign(_Fx _Func _NOT_INTEGRAL(_Fx), const _Alloc& _Ax) rn // construct wrapper holding copy of _Func rn this->_Tidy(); rn this->_Reset_alloc(_Func, _Ax); rn rn rn template rn void assign(reference_wrapper _Func, const _Alloc& _Ax) rn // construct wrapper holding reference to_Func rn this->_Tidy(); rn this->_Reset_alloc(_Func, _Ax); rn rn rn void swap(_Myt& _Right) rn // swap with _Right rn this->_Swap(_Right); rn rn rn _OPERATOR_BOOL() const rn // test if wrapper holds null <em>function</em> pointer rn return (!this->_Empty() ? _CONVERTIBLE_TO_TRUE : 0); rn rn rn const _XSTD2 type_info& target_type() const rn // return type_info object for target type rn return (this->_Target_type()); rn rn rn template rn _Fty2 *target() rn // return pointer to target object rn return ((_Fty2*)this->_Target(typeid(_Fty2))); rn rn rn template rn const _Fty2 *target() const rn // return pointer to target object rn return ((const _Fty2*)this->_Target(typeid(_Fty2))); rn rn rnprivate: rn template rn void operator==(const <em>function</em>&); // not defined rn template rn void operator!=(const <em>function</em>&); // not defined rn ; rnrn[/code]rnboost的实现是在<em>function</em>_template.hpp文件里,源代码如下:rn[code=C/C++]rntemplaternclass <em>function</em>rn : public BOOST_FUNCTION_FUNCTIONrnrn typedef BOOST_FUNCTION_FUNCTION base_type;rn typedef <em>function</em> self_type;rnrn struct clear_type ;rnrnpublic:rnrn <em>function</em>() : base_type() rnrn templatern <em>function</em>(Functor frn#ifndef BOOST_NO_SFINAErn ,typename enable_if_c::value)>::value),rn int>::type = 0rn#endifrn ) :rn base_type(f)rn rn rn templatern <em>function</em>(Functor f, Allocator arn#ifndef BOOST_NO_SFINAErn ,typename enable_if_c::value)>::value),rn int>::type = 0rn#endifrn ) :rn base_type(f,a)rn rn rnrn#ifndef BOOST_NO_SFINAErn <em>function</em>(clear_type*) : base_type() rn#endifrnrn <em>function</em>(const self_type& f) : base_type(static_cast(f))rnrn <em>function</em>(const base_type& f) : base_type(static_cast(f))rnrn self_type& operator=(const self_type& f)rn rn self_type(f).swap(*this);rn return *this;rn rnrn templatern#ifndef BOOST_NO_SFINAErn typename enable_if_c::value)>::value),rn self_type&>::typern#elsern self_type&rn#endifrn operator=(Functor f)rn rn self_type(f).swap(*this);rn return *this;rn rnrn#ifndef BOOST_NO_SFINAErn self_type& operator=(clear_type*)rn rn this->clear();rn return *this;rn rn#endifrnrn self_type& operator=(const base_type& f)rn rn self_type(f).swap(*this);rn return *this;rn rn;rn[/code]
请教关于 std::tr1:function 自动释放问题?
我在项目中使用了 <em>std</em>::tr1:<em>function</em>,发现,如果这个 <em>function</em> 对象中指定的 对象无效了,则 <em>function</em> 在析构时就会崩溃。rnrn[code=c]rnvoid CDlgMapFind::SearchGeomotry( LPCTSTR lpszGeometry )rnrn <em>function</em> callback = bind(&CDlgMapFind::ProcessCallBack, this, placeholders::_1);rn m_pMapHelper->StartSearchFeatures( lpszGeometry, m_vecChecks, callback );rnrnrnvoid CMapHelperBase::StartSearchFeatures( LPCTSTR featureName, const <em>std</em>::vector &vecLayers, <em>std</em>::<em>function</em> callback )rnrn m_searchParam.featureName = featureName;rn m_searchParam.vecLayers = vecLayers;rn m_searchParam.callback = callback;rnrn m_thSearchFeatures.SetThreadProc( bind(&CMapHelperBase::SearchFeatures, this, _1, _2), NULL );rn m_thSearchFeatures.Start();rnrnrnvoid CThread::SetThreadProc( <em>std</em>::<em>function</em> funThread, LPVOID lpParam )rnrn m_funThread = funThread;rn m_pParam = lpParam;rnrn[/code]rnrnm_searchParam.callback 保存了 CDlgMapFind 对象的 SearchGeomotry 函数地址rnm_funThread 保存了 CMapHelperBase 对象的 SearchFeatures 函数地址rnrn当 CDlgMapFind 对象先于 CMapHelperBase 对象之前析构时,这时 m_searchParam.callback 在析构时就会崩溃,原因好像是它会 delete 创建的函数对象,而此时 CDlgMapFind 对象已不存在,因此崩溃了。rnCThread::m_funThread 也是会发生类似的问题。rnrn我目前采用的办法是在必须对象被删除前手动对 <em>function</em> 置空。但这种方式不够通用,而且当 <em>function</em> 用的比较多的时候必然会差生因疏忽而导致的崩溃现象。rnrn请问,当 <em>function</em> 对象析构时,有没有办法不调用它的删除操作。或者大家有没有其它更好的办法解决这个问题?rnrn谢谢!!
关于std::function 相关绑定的未解决的问题。
问题描述: 使用map数据结构存储类似 string=><em>function</em> 形式的数据,进行可以方便调用不同的类型函数。 使用类似<em>std</em>::map,        调用方式: 1.map.insert(<em>std</em>::make_pair("string", <em>function</em>)   会出现无法编译的错误,          2.map.insert(<em>std</em>::make_pair("string",
一段有关std:function函数指针代码编译错误
代码如下rn[code=c]rn#include rntemplate rn<em>std</em>::<em>function</em> task_wrapper(<em>std</em>::<em>function</em> f, HContext c) rn <em>std</em>::<em>function</em> f2 = [&](int i)->void rn hsl_before_execute(c);rn f(i);rn hsl_after_execute(c);rn ;rn return f2; rnrn[/code]rnrn报错信息如下rn[code=text]rnhsl_temp.h: In <em>function</em> ‘<em>std</em>::<em>function</em> task_wrapper(<em>std</em>::<em>function</em>, HContext)’:rnhsl_temp.h:103: error: expected primary-expression before ‘[’ tokenrnhsl_temp.h:103: error: expected primary-expression before ‘]’ tokenrnhsl_temp.h:103: error: expected primary-expression before ‘int’rnhsl_temp.h:103: error: expected unqualified-id before ‘void’rnhsl_temp.h:103: error: expected ‘,’ or ‘;’ before ‘void’rn[/code]rnrn编译环境是Gcc/G++ 4.4rnboost版本1.43.0rnlib<em>std</em>c++版本4.4rnrn想问问这些错误的解决方法,还有就是这一句的[&]是什么用法?rn<em>std</em>::<em>function</em> f2 = [&](int i)->void rnrn这个void后面的我感觉是个函数定义,但函数没有名字,是不是匿名函数呢?求详解。
实现了类似std::function /bind /shared_ptr功能
实现了标准库中的<em>function</em>和bind以及智能指针,linux/windows通用。由于公司GCC版本较老,嵌入式的gcc也无法由我来控制,windows上使用的一些类似智能指针,在linux上无法使用,甚是不爽,于是自己手动写了一份,希望对大家有所帮助
关于using std::和using namespace std;
#includern#includernusing <em>std</em>::cin;rnusing <em>std</em>::cout;rnusing <em>std</em>::endl;rnusing <em>std</em>::vector;rnusing <em>std</em>::vector::iterator;rnrnint main()rnrn vector container;rnrn for(int i=0; i<<<<>c;rn return 0; rnrnrnerror C2885: “<em>std</em>::vector::iterator”: 在非类范围内不是有效的 using 声明 f:\ch8\ch10\ch10\源2.cpp 7 ch10rnrncpp(17) : error C2065: “iterator”: 未声明的标识符rnrn为什么会有这个错误提示,而把它改成以下代码的时候就可以通过,不都一样吗????rnrn#includern#includernusing namespace <em>std</em>;rnrnrnint main()rnrn vector container;rnrn for(int i=0; i<<<<<<>c;rnrn return 0;rnrnrnrnrnrn<em>关于</em>using <em>std</em>:: 和 using namespace <em>std</em>;的用法想请大家指点下rn
关于Function
List.OrderBy(Function(c), c.Subject).ToList();rnrn这具体是什么意思? c.还有很多方法,
关于std::list与std::auto_ptr的问题.
我采用以下方式释放对象时编译出错:"no copy constructor available or copy constructor is rndeclared 'explicit'".请问各位高手我该如何解决?rn代码:rnlist > lists;rnlists.push_back(auto_ptr(new MyClass));rnrnrn
关于std问题
在c++primer上编写一个程序 书上说strncpy在<em>std</em>下 怎么编译器说不在呢??
关于std::bind的问题
有这么个想法,rn想写一组通用的调用。rn使用<em>std</em>::bind来绑定任意函数。rn然后将这些对象放进一个容器里。rn最后统一顺序调用容器中的这些函数。rn现在暂时想到的写法如下。rnrn[code=c]#include rn#include rnrntypedef <em>std</em>::<em>function</em> fp; rntypedef <em>std</em>::vector VE_FUNC;rnrn//待绑定函数rnint tests()rnrn printf("tests\n");rn return 0;rnrnrnint tests1(int a)rnrn printf("tests1:%d\n",a);rn return 1;rnrnrnint tests2(int a,float aa)rnrn printf("tests2:%d,%f\n",a,aa);rn return 2;rnrnrnint tests3(int a,float aa,char* p)rnrn printf("tests3:%d,%f,%s\n",a,aa,p);rn return 3;rnrnrn//绑定rn VE_FUNC ve_func;rn fp f = <em>std</em>::bind(tests); rn ve_func.push_back(f);rn f = <em>std</em>::bind(tests1,12);rn ve_func.push_back(f);rn f = <em>std</em>::bind(tests2,12,11.11); rn ve_func.push_back(f);rn f = <em>std</em>::bind(tests3,13,11.22,(char*)"1233477"); rn ve_func.push_back(f);rnrn//调用rn for(int i=0;i < ve_func.size(); i++)rn rn ret = (ve_func[i])();rn printf("ret:%d\n",ret);rn rn[/code]rn这样做出现的实际问题,rn1.容器存储类型固定了,只能存储返回值类型为int的函数。rn2..无法使用占位符<em>std</em>::placeholders::_*,动态输入参数,[color=#FF6600]这点尤其重要,如果不能使用占位符动态输入参数,那这个统一调用将毫无意义。[/color]rnrn有哪位大神对<em>std</em>::bind比较熟悉的,能帮忙解答下么。
关于namespace std
#includernusing namespace <em>std</em>;rnvoid DoDraw(int num);rnint main()rnrn int num=5;rn DoDraw(num);rn return 0;rnrnvoid DoDraw(int num)rnrn for(int i=0;i
关于std::string?
请问<em>std</em>::string与CString 有什么区别,<em>std</em>::string的对象怎么用?请给代码,理解给分。
关于std::getline的问题!
bcb6 下调试通过。。。。vc提示错误!!!!!!!!!!!!!111rnrn#include rn#include rn#include rn#include rnrnrnint main(int argc, char* argv[])rnrn ifstream input;rn input.open("1.txt");rn <em>std</em>::string str;rn <em>std</em>::vector readBuf;rn while(!input.eof())rn rn <em>std</em>::getline(input, str);rn cout << str.c_str() << endl;rn readBuf.push_back(str);rn cin.get();rn rnrn return 0;rnrnrnE:\test\temp\d\d.cpp(19) : error C2780: 'class <em>std</em>::basic_istream &__cdecl <em>std</em>::getline(class <em>std</em>::basic_istream &,class <em>std</em>::basic_string &,const _E)' : expects 3 arguments - 2 providedrn c:\program files\microsoft visual studio\vc98\include\string(149) : see declaration of 'getline'rnE:\test\temp\d\d.cpp(19) : error C2784: 'class <em>std</em>::basic_istream &__cdecl <em>std</em>::getline(class <em>std</em>::basic_istream &,class <em>std</em>::basic_string &)' : could not deduce template argument for 'class <em>std</em>::basic_istream &' frnrom 'class ifstream'rnE:\test\temp\d\d.cpp(19) : error C2784: 'class <em>std</em>::basic_istream &__cdecl <em>std</em>::getline(class <em>std</em>::basic_istream &,class <em>std</em>::basic_string &)' : could not deduce template argument for 'class <em>std</em>::basic_istream &' frnrom 'class ifstream'rnE:\test\temp\d\d.cpp(19) : error C2784: 'class <em>std</em>::basic_istream &__cdecl <em>std</em>::getline(class <em>std</em>::basic_istream &,class <em>std</em>::basic_string &)' : could not deduce template argument for 'class <em>std</em>::basic_istream &' frnrom 'class ifstream'
关于std::wcout?
#include rnint main()rnrn wchar_t wc;rn wc = 'b';rn <em>std</em>::wcout << wc;rn system("PAUSE"); rn return 0;rnrn使用dev-C++编译,说什么`wcout' undeclared in namespace `<em>std</em>'rn请问问什么?
关于std::stringstream
FTRESULTrnFSUploadManager::Upload(rn const char* szServer,rn const char* szFileFullName,rn int64 nUserID,rn const char* szSesssionID,rn FS_UPLOAD_CALLBACK pCallBack,rn FS_UPLOAD_CALLBACK_EX pCallBack_Ex,rn TASKID& nTaskID,rn int nConvertType,rn int nConvertSizern )rnrn FTRESULT fr = FT_OK;rn。。。。rnrn <em>std</em>::stringstream ssUserID;rn ssUserID << nUserID;rn。。。。rnrnrn
困惑 关于std::
[code=C/C++]#include rn<em>std</em>::strncpy(firstname, fn, LIM - 1);[/code]我不停地看到这样的用法,但是很多人都告诉我这样用不对,请问到底在什么前提下,这样用是可行的?谢谢!rn
关于std::vector m_pointList;
class CAccess_to_opsrvDlg : public CDialogrnrn <em>std</em>::vector m_pointList;rn ---rn;rn这样定义是不是<em>std</em>类和CAccess_to_opsrvDlg冲突,<em>std</em>类和CAccess_to_opsrvDlg是什么关系?谢谢
关于std的问题
#includernusing namespace <em>std</em>;rnint main()rnrn int a;rn int x;rn int sum=1;rn cout<<>a;rn cout<<>x;rn cout<<<
关于 std::ofstream
标准C++中有类<em>std</em>::ofstream,打开以存在的文件用流模式标志 td::ios::noreplacern(如:<em>std</em>::ofstream tfile("text.dat",<em>std</em>::ios::noreplace);),文件不存在时报rn错。rn而BCB中好象没有这样的参数。请赐教!rn谢谢!rn
新手问题,关于STD
#include rnusing namespace <em>std</em>;rnclass Arnrnprivate:rn int m;rn rnpublic:rn rn A(int i):m(i)rn A operator+(A&a)return m+a.m;rn friend ostream& operator<<<
关于std::abs的取值
int Hurt = 101920;rn int b = <em>std</em>::abs(Hurt);rnrnrn结果b的值为0....rnrn为啥呢,来者有分,谢谢
关于namespace std的问题
在Thinking in C++ 的C09:cpptime.h 下面这样一段:rn====rn#include rn#include rnclass Time rn <em>std</em>::time_t t;rn <em>std</em>::tm local;rn char asciiRep[26];rn unsigned char lflag, aflag;rn void updateLocal() rn if(!lflag) rn local = *<em>std</em>::localtime(&t);rn lflag++;rn rn rn void updateAscii() rn if(!aflag) rn updateLocal();rn <em>std</em>::strcpy(asciiRep,<em>std</em>::asctime(&local));rn aflag++;rn rn rn;rn====rn请教高手,strcpy 是否属于 <em>std</em> 名字空间?
关于std::multimap的问题
class abcrnrn ....rn;rnmultimap cMMap;rnrn使用equal_range函数的时候返回pair应该如何定义?rn
关于using namespace std;
请问 using namespace <em>std</em>; 是怎么用的?rn我发现在有的程序中 定义头文件的时候 使用using namespace <em>std</em>; 就可以省去.hrn然而 在有的程序中却不可以这样 rn这是为什么啊???rn
关于using namespace std
在编程过程中,我使用#include "iostream"rn using namespace <em>std</em>;运行正常rn 使用#include "iostream.h"rn using namespace <em>std</em>;出错rnerror C2871: '<em>std</em>' : does not exist or is not a namespacernError executing rnrn请问这是什么缘故,谢谢
关于std::endl;
代码能通过编译。rn#include rn#include rn#include rnrnusing namespace <em>std</em>;rnrnint main()rn char *cp = "hello world!";rn char *cp2 = "Hello World!!";rn rn size_t slength = strlen(cp);rn size_t slength2 = strlen(cp2);rn const size_t arr_size = slength + slength2 + 1;rn //cout << endl;rn rn char arr[arr_size];rn strncpy(arr,cp,slength);rn strncat(arr,cp2,slength2+1);rn rn string str ("Hello world!!!");rn string str2("Hello World!!!!");rn string str3;rn rn str3 = str + str2;rn rn cout << arr <
关于std::string的迷惑
我在使用string时,遇到以下问题:rn我声明一个结构体,如下:rnstruct Arnrn int id;rn string name;rn;rnrnA a;rna.id = 9;rna.name = "tom";rn想把该结构体内容拷贝到char* buff中,用memcpy(buff,&a,sizeof(a)),并把buff通过tcp发送到服务器,在服务器端接收到后,再拷贝回A类型的结构体中如下:rnA b;rnmemcpy(&b,buff,sizeof(b));rnrnrn在此过程中,如果a.name长度小于16,结果与期望一致,但是如果a.name的长度大于16,则出现问题,通过调试发现再把buff中的内容拷贝回b,过程中,出现内存不可读,程序崩溃。rnrnrn请问各位大侠,这是什么回事?
关于std::的问题
先上代码rn[code=C/C++]rnrn#ifndef _IOSTREAM_rn#define _IOSTREAM_rnrnrn#includern#includern#includern#includern#includernrn#endifrnrnint main()rn rn char* a[]=rn "a",rn "ab",rn "",rn "a c",rn "abc"rn ;rn size_t n=sizeof(a)/sizeof(*a);rn <em>std</em>::vector v(a,a+n);rn <em>std</em>::vector::iterator pos;rn pos=<em>std</em>::find_if(v.begin(),v.end(),<em>std</em>::not1(<em>std</em>::bind1st(<em>std</em>::ptr_fun(strcmp),"abcd")));rn if(pos!=v.end())rn [color=#FF0000]<em>std</em>::cout<<
关于std::queue
<em>std</em>::queue m_queue;rn// 这时候列表中无任何数据rnint a = m_queue.fornt();rn会出错吗?rn
关于std::list push_back
typedef struct rn string bankid; ///< 机构代号rn string bankname; ///< 机构名称rn string sublevel ///< 机构级别rn string head; ///< 上级机构号rn TBankParam;rnrn<em>std</em>::list BankList;rnrnTBankParam Bank[2] = rn "00101", "杭州市庆春支行", "城区直管支行", "00161",rn "00102", "杭州市城北支行", "城区直管支行", "00161"rn;rnrnBankList.push_back(Bank[0]); // 这里是ok的,但假如没有Bank数组,我想直接在push_back()的参数里面初始化结构体可以么rn类似rnBankList.push_back("00101", "杭州市庆春支行", "城区直管支行", "00161"); // 当然这个语法肯定错的
关于std::list的传递
先看代码:rn[code=C/C++]rntypedef struct tagMSG_SELVIEWrn rn NMHDR hdr; rn UINT idTo;rn list* pListFile;rn LPWSTR sFilePath;rn LPWSTR sFileName;rnrn MSG_SELVIEW, *LPMSG_SELVIEW;rnrnLRESULT CViewList::OnKeyDown( UINT message, WPARAM wParam, LPARAM lParam)rnrn...rn xSendNotifyToParent( WID_MAINFRAME, SELECTED, (WPARAM)&m_listImage, (LPARAM)pInfo->name.c_str() );rn...rnrnrnvoid CViewSelectFileList::xSendNotifyToParent( UINT idTo, int nCode, WPARAM [color=#FF0000]wParam[/color], LPARAM lParam )rnrn NMHDR hdr;rn hdr.hwndFrom = GetSafeHwnd();rn hdr.idFrom = WID_VIEWSELECTFILE;rn hdr.code = nCode;rn switch( idTo )rn rn case WID_MAINFRAME :rn rn MSG_SELVIEW hvw;rn hvw.idTo = idTo;rn //hvw.sFilePath = (LPWSTR)wParam;rn hvw.pListFile = (list*)wParam;rn hvw.sFileName = (LPWSTR)lParam;rn hvw.hdr = hdr;rnrn SendMessage( GetParent()->GetSafeHwnd(), WM_NOTIFY, WPARAM( WID_VIEWSELECTFILE ) ,LPARAM( &hvw ) );rn rn default : break;rn rnrn[/code]rnrn我想通过xSendNotifyToParent将list路径列表从view传出到mainframe中,如上代码。rn现在的问题是hvw.pListFile = (list*)wParam;强制转换后hvw.pListFile中是空的,并未通过引用指针强制转换得到List,请教各位大人该如何定义MSG_SELVIEW 和传递list到SendMessage的lParam中。rnrn
关于std文件。。。。
请问各位高手。我对informix数据库不熟悉。。着有个.<em>std</em>的文件,我觉得好象跟这个数据库有点关系,故在此提问。请问我怎么样才能打开他呀。。。我想看看里面有什么信息。。各位 informix高手帮忙呀
关于std::follow
[code=c] // TEMPLATE FUNCTION forwardrntemplate inlinern _CONST_FUN _Ty&& forward(rn typename remove_reference::type& _Arg) _NOEXCEPTrn // forward an lvalue as either an lvalue or an rvaluern return (static_cast(_Arg));rn rnrntemplate inlinern _CONST_FUN _Ty&& forward(rn typename remove_reference::type&& _Arg) _NOEXCEPTrn // forward an rvalue as an rvaluern static_assert(!is_lvalue_reference::value, "bad forward call");rn return (static_cast(_Arg));rn [/code]rn为什么follow不允许使用左值参数?rn在使用一些c语言编写的函数时候总会有这样的函数rnint write (const char *str ,int *len) ;rn第二个参数既要作为str长度的输入,又作为实际写入的字符数的返回,但是其实我并不关心这个返回值rn我想用一个右值作为参数write ("123" ,&int (3)) ;rn[code=c]template rninline constexpr typename <em>std</em>::remove_reference::type &delivers (T &&arg) rn return arg ;rn[/code]rn显然右值不能取地址,但是write ("123",&<em>std</em>::delivers (3)) ;这写法能通过rn但是type_traits没有类似的函数rn刚刚我突然觉得其实write ("123",&<em>std</em>::follow (3)) ;应该能和上面一样rn却被这句阻止了static_assert(!is_lvalue_reference::value, "bad forward call");rn有没有办法能在不修改库文件的情况下不触发那条断言rn比如给follow加个偏特化之类的(可以就好了)
关于std::swap()
为什么没有这样一个函数rnrntemplate rnswap_raw(T& t1, T&t2)rnrn char *p1 = (char *)&t1;rn char *p2 = (char *)&t2;rn for (int i = 0; i < sizeof(T); ++ i)rn rn <em>std</em>::swap(*p1 ++, *p2 ++);rn rnrnrnrn毕竟对于一些构造函数比较大的类来说,<em>std</em>::swap()的做法有些太昂贵了。rn这个swap_raw可以很好的解决这个问题。唯一的限制在于,程序员需要保证被交换的两个变量是同一种类型的,不能有任何隐式的类型转换。rnrn但是相信在具体调用swap_raw而不是swap的时候,应该会注意到这个问题。rnrnrnrn请大家表达一下自己的看法。谢谢!rnrn:)
关于std::listiterator问题
rnclass Buddyrnrnpublic:rn Buddy()rn x =0.0,y = 0.0;rnrn//get and set methodrnprivate:rn double x,y;rnrnrnlist::iterator iter;rnfor(iter = list1->begin(); iter!=list1->end; iter++)rn if(iter->getX() * (iter+1)->getX() <0)rn........rnrnrn我先在for循环体里面求list相邻的两个数相乘小于零rn但是我碰到的问题是没有这样的形式rn比如 (iter+1)就出错了,谢谢帮忙。
关于using namespace std
using namespace <em>std</em>rn到底是放在头文件以下好rn还是放在主函数里面好?rn我看很多书上逗写在函数体内rn我不知道用意
关于std::move与右值引用
<em>关于</em><em>std</em>::move与右值引用 先来看一个例子class A { public: A(){ arr_ = new int[10](); len_ = 10; } A(A && a) { arr_ = a.arr_; a.arr_ = nullptr; len_ = a.len_; }
关于std::make_pair的问题...
如果用make_pair(1,"aaaaaaaa");rn编译器就会报错误:rnerror C2536: '<em>std</em>::pair::second' : cannot specify explicit initializer for arraysrnrn我用的是VC编译器,请教各位高手,这是为什么?难道make_pair不能初始化为字符串吗?
关于 using namespace std
我对照c++ primer,发现几乎每个程序都得使用 using namespace <em>std</em>rn我也知道using指示符告诉编译器要使用名字空间<em>std</em>中声明的名字。rn难道总使用 using namespace <em>std</em>,有什么其他方法?请高手指点。
关于std、cin、cout
<em>std</em>是命名空间我知道,但是<em>std</em>是不是包含在iostream库里面的?rnrn书上说库包含在命名空间里,是什么意思?rnrncin和cout是标准库里的还是<em>std</em>命名空间的里的?rnrn为什么编程时只导入一个标准库,但还要指定使用哪个命名空间,难道C++默认有多个命名空间?rnrn问题比较多,我给了80分。
请教:关于std::
最近刚开始学Windows编程,一本书上的一个例程中用到了一下语句:rn rn static <em>std</em>::string str;rnrn编译时未通过,错误如下:rnrn error C2065: 'string' : undeclared identifierrnrn我是在VC 6.0下编译的。请问如何更改。记得一本书里说过像<em>std</em>::这类东西是ANSI标准的东西。我不明白,哪位高手告诉一下<em>std</em>::到底是个什么东西?还有ANSI标准是什么?rn rn
std::istream &is=std::cin??
c++primer有个习题,: rn逻辑上讲,我们可能希望将cin作为默认实参提供给接受一个istream&形参的构造函数。编写使用cin作为默认实参的构造函数声明。 rnSales_itm(<em>std</em>::istream &is=<em>std</em>::cin); rn小弟不明白,是不是is采用复制构造函数利用cin定义赋值了。rn还有就是流到底是什么,谁有cin或者fstream的源码给贴出来看一下rnrn
jQuery,关于$(function() ) 和 $(function($) ) 有什么不一样?
看到一款网页导航菜单,效果如下图:rn[img=https://img-bbs.csdn.net/upload/201307/15/1373903960_432899.jpg][/img]rn它的代码如下:rn[img=https://img-bbs.csdn.net/upload/201307/16/1373904162_128979.jpg][/img]rn我知道$(<em>function</em>());是相当于 $(document).ready(<em>function</em>())rn但是怎么理解$(<em>function</em>($) )呢?谢谢指教。
关于 function a() 和 a = function()的问题
RT这两个有什么区别啊?rnrn我还见到有这么写的rn<em>function</em> document.getElementById ()rnrndocument.getElementById = <em>function</em>()rnrn有啥区别啊?
一切皆为对象——std::function可调用对象包装器
c++是一门庞杂繁复的工程化程序设计语言,受困于C++浩如烟海的知识技能中,许多新朋友虽然学到了很多知识,却没有办法投入实用。因此,本门课程特别的从当前最实用的技术出发,分为QT技术导引,工程中的C++面向对象技术,将最实用的开发经验进行了分享。
通过c++11的std::bind及std::function实现类方法回调,模拟Qt实现信号槽
c++11引入了<em>std</em>::bind及<em>std</em>::<em>function</em>,实现了函数的存储和绑定,即先将可调用的对象保存起来,在需要的时候再调用。网上有很多介绍。 Qt信号槽实现信号的发送和接收,类似观察者。简单说明: sender:发出信号的对象 signal:发送对象发出的信号 receiver:接收信号的对象 slot:接收对象在接收到信号之后所需要调用的函数(槽函数) emit:发送信号 下面实现第...
从仿函数到std::function再到虚幻4 Delegate
这几天研究了一下虚幻4的delegate,但是想要理解这个,还得从仿函数说起。仿函数的定义是:A Functor is a object which acts like a <em>function</em>. Basically, a class which defines operator().下面是一段代码例子: class MyFunctor { public: int operator
设计模式(四)std::function接口编程彻底取代抽象工厂和工厂方法
  抽象工厂Abstract Factory 意图:用工厂类的不同成员函数来返回不同类型的对象。这些不同的对象往往是有着共同的基类,最终是想利用多态。而多态已经被<em>function</em>+bind取代,所以这个模式没啥意义!   特点:使用智能指针获取对象,而不是暴露原始指针。 代码:   #include &quot;boost/smart_ptr.hpp&quot; #include &quot;boost/wea...
'fun1' : overloaded member function 'void (class std::basic_ifstream
我在CView中增加一个成员函数void CNameView::fun1(ifstream &file),就储蓄爱你了上述的问题
请问下大神们,c++11 std::function的问题
在windows上编译运行成功rn在linux编译失败rn#include rn#include rn#include rnrnrn#define TASK_BIND(fun) (<em>std</em>::bind(&SELF_TYPE::fun, this, <em>std</em>::placeholders::_1))rnrntemplaternclass MessageHandlernrnpublic:rn typedef int CMD_TYPE;rnrnrn typedef MessageHandle SELF_TYPE;rn MessageHandle()rn rn register_cmd_handler(0, TASK_BIND(handle_cmd_unknown));rn rn void handle_message(const MessageType& msg)rn rn <em>std</em>::map>::iterator it = m_cmd_handler.find(msg.get_cmd_type());rn if (it != m_cmd_handler.end())rn rn it->second(msg);rn rn elsern rn handle_cmd_unknown(msg);rn rn rn void register_cmd_handler(const CMD_TYPE& cmd, <em>std</em>::<em>function</em> hander)rn rn <em>std</em>::pair>::iterator, bool> ret = m_cmd_handler.insert(<em>std</em>::make_pair(cmd, hander));rn if (!ret.second)rn rn m_cmd_handler[cmd] = hander;rn rn rn void handle_cmd_unknown(const MessageType& msg) <em>std</em>::cout << "test\n"; rnprivate:rn <em>std</em>::map> m_cmd_handler;rn;rnrnclass ClientMessagernrnpublic:rn int get_cmd_type() const return 0; rn;rnrnint main()rnrnrn MessageHandle handle;rn ClientMessage msg;rn handle.handle_message(msg);rn return 0;rnrnrnIn member <em>function</em> 'void MessageHandle::handle_message(const MessageType&)':rnMessageHandle.h:22:3: error: need 'typename' before '<em>std</em>::map >::iterator' because '<em>std</em>::map >' is a dependent scopern <em>std</em>::map>::iterator it rn ^rnMessageHandle.h:22:77: error: expected ';' before 'it'rn ap>::iterator it = m_cmd_rn ^rnMessageHandle.h:23:7: error: 'it' was not declared in this scopern if (it != m_cmd_handler.end())rnrn怎么解决 谢谢
请教一下Qt里面的std::function的使用
最近重新在学习Qt,看到了一个用Qt写的天气预报例子。rn里面用到了一些<em>std</em>::<em>function</em> <em>std</em>::bind的地方,有点似是而非,请教一下大家。rnrn这是管理获取城市列表,天气的一个类。rnrnrn[color=#FF0000]typedef <em>std</em>::<em>function</em> OnMessage;[/color] [color=#FF0000]//这里定义了这么一个函数.[/color]rnrnclass CityManager : public QObjectrnrn Q_OBJECTrnrnpublic:rn CityManager(QObject *parent = 0);rnrn void getSupportProvince(const OnMessage &msg);rn void getSupportCity(const QString &provinceName, const OnMessage &msg);rn rnrnprivate slots:rn void replyFinished(QNetworkReply *);rnrnprivate:rn QNetworkAccessManager *net_;rn [color=#FF0000] OnMessage onMessage_;[/color]rn;rnrnrn然后,实现函数里面都这样使用的。rnrnvoid CityManager::getSupportProvince(const [color=#FF0000]OnMessage &msg[/color])rnrn [color=#FF0000] onMessage_ = msg;[/color] [color=#FF0000]//这里是把当成了函数指针?[/color]rn QUrl url("http://www.webxml.com.cn/WebServices/WeatherWebService.asmx/getSupportProvince?");rn QNetworkRequest request(url);rn net_->get(request);rnrnvoid CityManager::replyFinished(QNetworkReply *reply)rnrn ......rn while (!reader.atEnd()) rn reader.readNext();rn if (reader.isStartElement()) rn if (reader.name() == "string") rn list.append(reader.readElementText());rn rn rn rnrn [color=#FF0000] if (onMessage_) rn onMessage_(list);rn [/color]rn rnrnrnrnvoid Dialog::onProvinces(const QStringList &strList)rnrn QStringList::const_iterator citer = strList.constBegin();rn for ( ; citer != strList.constEnd(); ++citer) rn ui->provinces->addItem(*citer);rn rn ui->provinces->setCurrentIndex(0);rn cityManager_.getSupportCity(ui->provinces->currentText(), <em>std</em>::bind(&Dialog::onCitys, this, <em>std</em>::placeholders::_1));rnrnrn[color=#FF0000]//这里,我看到又用<em>std</em>::bind来绑定了dialog里面的onProvinces函数,这里是不是说list已经被 onMessage获取了?[/color]rn cityManager_.getSupportProvince(<em>std</em>::bind(&Dialog::onProvinces, this, <em>std</em>::placeholders::_1));rnrn有点乱,就是不是很理解list是怎么从replyfinished里面获取的。
求助,关于function的声明
看了好久看不懂这个声明方法的含义,求助~~~rn[code=javascript](<em>function</em>() rn var SelectParser;rnrn SelectParser = (<em>function</em>() rnrn <em>function</em> SelectParser() rn this.options_index = 0;rn this.parsed = [];rn rnrn SelectParser.prototype.add_node = <em>function</em>(child) rn if (child.nodeName === "OPTGROUP") rn return this.add_group(child);rn else rn return this.add_option(child);rn rn ;rnrn return SelectParser;rnrn )();rnrn this.SelectParser = SelectParser;rnrn).call(this);rn[/code]
关于function的toString
[code=JScript]rn<em>function</em> add(x)rn add.toString=<em>function</em>()return this.p;rn add.p=(add.p || 0)+x;rn return add; rnrnalert(add(2)(3)(4)) //结果为2+3+4=9rn[/code]rnrn求这段代码的解释,主要是add.toString 到底都干了什么?
关于functor(function object)
stl的算法中,functor都是以pass by value方式传递的。但rn1.functor的优势之一是可以有状态,如果可以通过pass by reference方式的话,那么可以将处理过程信息保存在functor对象中做后续处理。rn2.pass by value的效率一般比pass by reference低。rnrnrn那么stl的做法是出于什么样的考虑呢?
关于callback function的问题~~~~~~~~~~~~~~
form1.frm:(form1上有listbox:lstWinHandles)rnPrivate Sub Form_Load()rnModule1.getWinHandlesrnEnd SubrnrnModule1.bas:rnPublic Declare Function EnumWindows Lib "user32" (ByVal lpEnumFunc As Long, ByVal lParam As Long) As LongrnPublic Declare Function GetActiveWindow Lib "user32" () As LongrnrnPublic Sub getWinHandles()rn Dim lonStatus As Longrn Dim lonDummy As Longrn lonStatus = EnumWindows&(AddressOf enumWindowsProc, lonDummy)rnEnd SubrnrnFunction enumWindowsProc(ByVal addhWnd As Long, ByVal optParam As Long) As Longrn Form1.lstWinHandles.AddItem Str$(addhWnd&) '不明白rn enumWindosProc = TruernEnd Functionrn问题:rnForm1.lstWinHandles.AddItem Str$(addhWnd&)中的“addhWnd“是什么?rn是某函数的头指针,是form1的句柄,还是什么东东?rn请高手指教。
关于javascript function
isMail:<em>function</em>(A)return/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/.test(A),submit:<em>function</em>()var C=true;var D=pt.$("loginform");rnrnrnisMail:<em>function</em>(A)rnrnsubmit:<em>function</em>()rnrn上面两种写法看不懂,和<em>function</em> submit()这种形式是一样的还是有不同。
关于调用Function的问题
请问,Public Function GetTables(con As ADODB.Connection, strTable() As String) As Boolean如何调用,谢谢。rn代码在:http://www.360doc.com/content/14/1026/15/16325679_420060897.shtml
C++中 直接调用、函数指针、std::function效率对比
[size=large]C++中 直接调用、函数指针、<em>std</em>::<em>function</em>效率对比 调用次数:10亿次 CPU: i7 860 (主频2.8GHz) [color=red]测试结果:[/color] 函数指针要比直接调用慢2s左右;<em>std</em>::<em>function</em> 要比函数指针慢2s左右 貌似<em>std</em>::<em>function</em>调用时多了一句if语句的判断,用于测试是否绑定了函数。 ...
一个关于function的疑问。。。。
<em>function</em> ReadOffset;rn<em>function</em> File;rn<em>function</em> Directory;rnReadOffset = [](ifstream* file, uint32_t fileStart)->uint32_t ...;rnFile = [&ReadOffset, &Directory](Node n) ...;rnDirectory = [&File, &ReadOffset, &Directory](Node n, ifstream* file, uint32_t fileStart) ...;rn请问[&ReadOffset, &Directory]是什么。。。。rnrn另外。。。rnfor_each(begin(), end(), [](Foothold* fh1)rn for_each(begin(), end(), [&](Foothold* fh2)rn if (fh1->nextid == fh2->id) rn fh1->next = fh2;rn rn if (fh1->previd == fh2->id) rn fh1->prev = fh2;rn rn );rn );rnrn[](Foothold* fh1) [&](Foothold* fh2)的中括号中是什么。。。rnrnrn
关于template function
大家好,请看下面的程序:rn#include rn#include rnrnusing namespace <em>std</em>;rnrntemplaternelemtype *find(vector &evec,rn const elemtype &value);rnrnint main(void)rnrn float iarray[]=1.0,3.0,5.0,7.0,9.0,11.0,13.0,15.0;rn vector ivec(iarray,iarray+8);rn cout &,const elemtype &)' : template parameter 'elemtype' is ambiguousrnrn而将程序中所有的"float"改为"int",便可正常运行,请问为什么?谢谢解答!
关于Procedure和Function
<em>关于</em>Procedure和Functionrn定义在类中的Procedure和Function有什么区别?rn他们是不是都可以单独存在。
关于tr1::function
请问一下,tr1::<em>function</em> tt1;rn就是这种在<>之间通过函数的signature(“int (int)”)在内部存放指向int (int)函数的指针是怎样实现的?rn在类模板里,"T* a"为什么不行?
一个关于加密解密的function
<em>function</em> encrypt(inpass in varchar2)--加密的函数 <em>function</em> decrypt(outpass in varchar2)--解密的函数
关于function template
为什么说:一个<em>function</em> template会被具现多次?rn“explicit instantiation declarations(明白的具现化宣告)”是什么一会事?
求助:关于CALLBACK FUNCTION
如果回调函数是一个类的成员,怎样使用他呢?rn譬如:rnclass CMyWinrnrnpublic:rn HRESULT WinInit( HINSTANCE hInst, int nCmdShow, HWND* phWnd, HACCEL* phAccel );rn LRESULT CALLBACK MainWndProc( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam );rn ...rn ...rn;rnrnHRESULT CMyWin::WinInit( HINSTANCE hInst, int nCmdShow, HWND* phWnd, HACCEL* phAccel )rnrn WNDCLASSEX wc;rn HWND hWnd;rn HACCEL hAccel;rnrn wc.cbSize = sizeof(wc);rn wc.lpszClassName = TEXT("MYWIN");rn wc.lpfnWndProc = MainWndProc;rn //编译此处总是出错rn //cannot convert from 'long (__<em>std</em>call CMyWin::*)(struct HWND__ *,unsigned int,unsigned int,long)' to 'long (__<em>std</em>call *)(struct HWND__ *,unsigned int,unsigned int,long)'rn ...rn ...rnrnrn把MainWndProc做成全局函数可行,但我要用类中好多成员。rn怎样解决呢?rnrn
关于function 返回数组
我要用一个<em>function</em>()来返回一个数组rnrn该怎么写啊?rn请各位高手赐教rn谢谢~~~~
C++11 在析构函数中执行lambda表达式(std::function)捕获this指针的陷阱
lambda表达式是C++11最重要也最常用的一个特性之一。lambda来源于函数式编程的概念,也是现代编程语言的一个特点。 <em>关于</em>lambda表达式的概念并不是本文的重点,网上可以找到无数的写得极好的文章介绍它。我想说的是善用lambda表达式,将给C++编程带来极大的便利,这是本人最近学习C++11以来真实深切的感受,但是有时候误用lambda表达式也会给编程带来极大的隐患,本文以最近的经历说明
求解: Compare Function 在 std::sort中的錯誤~(VC6)
為何以下這樣簡單的做法會產生了 Runtime Error?rn當數量帶到某一個數後~compare <em>function</em> 就會收到一個爛的pointer 而產生錯誤~rn要怎樣解決呢?這是否VC6 standard library 的bug?rnrn#include rn#include rn#include rn#include rnrntypedef struct _SIMInfornrn BOOL bOnline;rn SIMInfo;rnrn<em>std</em>::vector m_arr;rnrnbool CompareFriend(SIMInfo * infox, SIMInfo * infoy)rnrn bool b = infox->bOnline;rn bool b2 = infoy->bOnline;rn return true;rnrnrnint main(int argc, char* argv[])rnrn for (int i = 0; i < 50; ++i)rn rn SIMInfo * pinfo = new SIMInfo;rn memset(pinfo, 0, sizeof(SIMInfo));rn m_arr.push_back(pinfo);rn rnrn <em>std</em>::sort(m_arr.begin(), m_arr.end(), CompareFriend);rnrn return 0;rnrnrn
c++11类std::function实现模板函数.h中怎么声明?
[code=c]rnclass pgPoolManager rnpublic:rn pgPoolManager() rnrn rnrn ~pgPoolManager() rnrn rnprivate:rn template rn <em>std</em>::deque,string,T)> > _queueTask;rn[/code]rnrn[code=c]rn严重性 代码 说明 项目 文件 行 禁止显示状态rn错误 C3376 “pgPoolManager::_queueTask”: 只允许使用静态数据成员模板 rnrn[/code]
谁能告诉我-std=c99下,为什么会报implicit function警告
在gcc下,加上-<em>std</em>=c99,再调用usleep函数就会报:warning: implicit declaration of <em>function</em> ‘usleep’rn 网上说c99还没得到完全实现,网上说用-<em>std</em>=gnu99就好了,我试了确实。rn 只是忍不住问一句,为什么在-<em>std</em>=c99下会警告我隐式声明了,我明明包含了文件,难道预处理的时候它没有展开么?(网上有人说没展开),为什么不展开呢?
请教各位大牛,如何比较两个std::function是否相等?
我想保存多个<em>std</em>::<em>function</em>对象,同时支持移除操作。移除操作必须能够区分各<em>std</em>::<em>function</em>。rn所以,请问如何区分两个<em>std</em>::<em>function</em>是否相等?
一个关于function的问题
我form里定义了几个type, 来储存多边形的顶点坐标. 如rnPrivate Type VertexPointrn x As Doublern y As DoublernEnd TypernrnPrivate Type Polygonrn Vertex(5) As VertexPointrnEnd Typern rnDim PolygonList(100) As Polygonrnrn我想从主程序中call一些<em>function</em>,并想把PolygonList中的所有点坐标都给到<em>function</em>里.rn比如说一个Intersection <em>function</em>.rnrn我在主程序中写了rnrnIntersection (Polygonlist).rnrnFunction 开头是rnrnFunction Intersection (List as Variant) as Booleanrnrn但每次运行都不成.请大家帮帮我搞定这个问题.我是个初学者,手头也没有书.希望能在这找个好答案. 谢谢!rnrnrn
关于function 和 bind 的问题。。。。
为什么main 函数的两条语句不能运行?rnrnrnrn[code=C/C++]rn#include rn#include rn#include rnrnclass GameCharacter4; rnint defaultHealthCalc2( const GameCharacter4& gc ) rnrnclass GameCharacter4rnpublic:rn // HealthCalcFunc is any callable entity that can be called withrn // anything compatible with a GameCharacter and that returns anythingrn // compatible with an int:rn rn typedef boost::<em>function</em> < int ( const GameCharacter4& )> HealthCalcFunc;rn explicit GameCharacter4( HealthCalcFunc hcf = defaultHealthCalc2 )rn :healthFunc( hcf )rn rn int healthValue() constrn return healthFunc( *this ); rnprivate:rn HealthCalcFunc healthFunc;rn;rnrnclass GameLevelrnpublic:rn int health( const GameCharacter4& ) const // health calculationrn // member <em>function</em>; notern // non-int return typern static int health2( const GameCharacter4& ) rn // health calculation using static member <em>function</em>rn rn;rnrnclass EvilBadGuy4 :public GameCharacter4;rnrnint main()rnrn rn GameLevel currentLevel;rn EvilBadGuy4 ebg2( boost::bind( &GameLevel::health, currentLevel,_1 )); // why cant rn rn EvilBadGuy4 ebg3( &GameLevel::health2 ); // ??? Why can't it workrn return 0;rnrnrnrnrnrnrnrnrnrn[/code]
关于Function对象
rn var f = <em>function</em>(name)rn rn this._name=name;rn rnrn请问为什么f._name为undefine?rn
关于function的一个问题
现在有两个类A和B,现在希望将B中的一个成员函数放入A中的tr1::<em>function</em>对象中rnrn但是现在的问题是,好像<em>function</em>中也得指定具体的一个类类型,因为要搞定this指针rnrn那么,这样的话,如果我有多个不同的类并且都有可能将一个成员函数放入A的tr1::<em>function</em>对象中,好像就不行了吧rnrn不知是不是这样
关于mysql的function~~~
按照网上的教程,写了个小练习,可是报错 求大神帮忙看看 赳赳错 rnrnDELIMITER // rncreate <em>function</em> get_tot_ords(in c_num int) Returns doublernrnBeginrnrndeclare tot_ord double;rnselect sum(amount) into tot_ord from orders where cust = c_num;rn rnreturn tot_ord;rnrnEnd;rn//
关于function和document的问题
rn rn arnrnrn rn rn rnrnrn想问怎么让他们在同一个页面显示。就是那个1不会出现在另一个页面,而是在a下面。
梦联网站改版设计需求下载
梦联网站改版设计需求梦联网站改版设计需求梦联网站改版设计需求 相关下载链接:[url=//download.csdn.net/download/rihaijin/2291481?utm_source=bbsseo]//download.csdn.net/download/rihaijin/2291481?utm_source=bbsseo[/url]
Proteus软件使用下载
Proteus软件使用,教你快速掌握软件,呵呵~~很不错的例子,是我精心总结的 相关下载链接:[url=//download.csdn.net/download/zhengsijing/2355908?utm_source=bbsseo]//download.csdn.net/download/zhengsijing/2355908?utm_source=bbsseo[/url]
学习笔记_使用plsql导出数据.doc下载
学习笔记_使用plsql导出数据.doc 相关下载链接:[url=//download.csdn.net/download/zhao_xn/2790611?utm_source=bbsseo]//download.csdn.net/download/zhao_xn/2790611?utm_source=bbsseo[/url]
相关热词 c#异步发送kafka c#窗体编号 c# 操作二进制文件 c# 反射 机制 c#线程 窗体失去响应 c#角度转弧度 c# 解析gps数据 c# vs设置 语法版本 c# json含回车 c#多线程demo
我们是很有底线的