| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2450 人关注过本帖
标题:c++11中如下lambda操作如何在c++98使用bind2nd实现
取消只看楼主 加入收藏
S140131022
Rank: 2
来 自:重庆邮电大学
等 级:论坛游民
帖 子:205
专家分:35
注 册:2014-10-9
结帖率:90.24%
收藏
已结贴  问题点数:20 回复次数:3 
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
S140131022
Rank: 2
来 自:重庆邮电大学
等 级:论坛游民
帖 子:205
专家分:35
注 册:2014-10-9
收藏
得分:0 
回复 4楼 复旦
这个5是什么意思哦? 可否详细一点呢

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


既然还有不甘心
就还没到放弃的时候~
2018-11-13 19:51
S140131022
Rank: 2
来 自:重庆邮电大学
等 级:论坛游民
帖 子:205
专家分:35
注 册:2014-10-9
收藏
得分:0 
回复 8楼 复旦
因为想实现区间赋值,感觉它比使用迭代器进行for循环效率要高一些!

既然还有不甘心
就还没到放弃的时候~
2018-11-14 08:10
快速回复:c++11中如下lambda操作如何在c++98使用bind2nd实现
数据加载中...
 
   



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

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