![]() |
#2
复旦2018-11-13 18:24
|

其中: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;
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怎么实现,以前学过,但是很久没用忘记了~
谢谢各位大神!