标题:c++11中如下lambda操作如何在c++98使用bind2nd实现
只看楼主
S140131022
Rank: 2
来 自:重庆邮电大学
等 级:论坛游民
帖 子:205
专家分:35
注 册:2014-10-9
结帖率:90.24%
已结贴  问题点数:20 回复次数:7 
c++11中如下lambda操作如何在c++98使用bind2nd实现
功能很简单,主要是为了实现容器的每个元素中一个成员变量的赋值操作,但是这个元素是一个类成员函数,所以我就不会了!

其中:m_MessageBox[serviceID]是一个Vector,其元素定义为:
程序代码:
// 消息元素,用于保存Refresh线程中缓存的消息
class MessagBrick
{
public:
    HKEX_OMDD::Uint16            MsgType;        // Type of message.
    HKEX_OMDD::Uint16            MsgSeq;            // RealSeqNum of message
    char                        Content[1000];    // Message Content
    MessagBrick()
    {
        MsgType = 0;
        MsgSeq = 0;
        memset(Content, 0, sizeof(Content));
    }
};

typedef std::vector<MessagBrick> MessVector;


使用迭代器实现如下:
    //MessVector::iterator iter = m_MessageBox[serviceID].begin();
    //for (; iter != m_MessageBox[serviceID].end(); ++iter)
    //{
    //    iter->MsgSeq = seqID;
    //}

C++11使用lambda实现如下:
for_each(m_MessageBox[serviceID].begin(), m_MessageBox[serviceID].end(), [seqID](MessagBrick& element) {element.MsgSeq = seqID; });

请问使用C++98中的bind2nd怎么实现,以前学过,但是很久没用忘记了~

谢谢各位大神!
搜索更多相关主题的帖子: c++ 操作 元素 message Content 
2018-11-13 17:36
复旦
Rank: 3Rank: 3
等 级:论坛游侠
威 望:2
帖 子:81
专家分:124
注 册:2018-10-29
得分:10 
for(所有的m_Messagebox里面的成员)

    bind2nd(元素.MessageBrick(), 5) )


bind2nd的功能是绑定函数的第二个元素值。
2018-11-13 18:24
S140131022
Rank: 2
来 自:重庆邮电大学
等 级:论坛游民
帖 子:205
专家分:35
注 册:2014-10-9
得分:0 
回复 4楼 复旦
这个5是什么意思哦? 可否详细一点呢

既然还有不甘心
就还没到放弃的时候~
2018-11-13 19:24
复旦
Rank: 3Rank: 3
等 级:论坛游侠
威 望:2
帖 子:81
专家分:124
注 册:2018-10-29
得分:0 
5是我随便写的。 5的位置填写想要赋值的数字。
2018-11-13 19:48
S140131022
Rank: 2
来 自:重庆邮电大学
等 级:论坛游民
帖 子:205
专家分:35
注 册:2014-10-9
得分:0 
回复 6楼 复旦
能否直接写出答案,我之所以不会用是因为单个元素是一个class,而不是基本数据类型,如果是基本数据类型我还是会的。


既然还有不甘心
就还没到放弃的时候~
2018-11-13 19:51
复旦
Rank: 3Rank: 3
等 级:论坛游侠
威 望:2
帖 子:81
专家分:124
注 册:2018-10-29
得分:0 
刚刚理解错了问题,以为是改变某个函数里面的元素。 不好意思。
但是,bind2nd是函数值绑定器。我不太理解你为什么要用这个来赋值变量。
C98里可以用迭代器赋值的呢。
2018-11-13 20:54
S140131022
Rank: 2
来 自:重庆邮电大学
等 级:论坛游民
帖 子:205
专家分:35
注 册:2014-10-9
得分:0 
回复 8楼 复旦
因为想实现区间赋值,感觉它比使用迭代器进行for循环效率要高一些!

既然还有不甘心
就还没到放弃的时候~
2018-11-14 08:10
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:10 
使用 bind2nd 的话,你总得独立写个 函数 或 仿函数 吧,岂不是代码变得更臃肿?
for_each 并不比 for循环 效率更高
2018-11-14 08:42



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-491225-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.258593 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved