C++ 检查静脉中是否有重复

C++ 检查静脉中是否有重复,c++,simulation,omnet++,veins,sumo,C++,Simulation,Omnet++,Veins,Sumo,我不熟悉Velses,并尝试实现一种机制来检测WSM数据包之前是否收到过。我使用“psid”作为主要变量来标识数据包-是否正确 这种代码有效吗 bool MyVeinsApp::msgReceivedBefore(int psid){ /* This function will be used to determine if the message was received before and should be discarded or processed further *

我不熟悉Velses,并尝试实现一种机制来检测WSM数据包之前是否收到过。我使用“psid”作为主要变量来标识数据包-是否正确

这种代码有效吗

bool MyVeinsApp::msgReceivedBefore(int psid){
  /*
  This function will be used to determine if the message was received before
  and should be discarded or processed further
  */

  if(msg_log.find(psid) == msg_log.end()){
     return false
  }
  else {
     return true;
  }

}

这里MSG.LoC是一个基于PSID的WSMS存储的C++数据结构。

< P>只是PSID是您使用的服务的标识符(见),因此在同一服务的消息之间不是唯一的。要区分消息,您需要一个唯一的消息标识符

一种简单的方法是使用OMNeT++中的每个模块都可以获得的:

msg->getId()

更新:请注意,此id在具有相同内容的所有邮件中也是唯一的(请参见下面的注释)。

这不是100%正确。当静脉在内部复制信息时,每辆车都会收到一条具有不同id的信息——尽管实际上该信息是相同的广播。因此,为了实现这一点,您可能需要使用唯一标识符扩展消息,并使用模拟环境中的
getUniqueNumber()
分配一个值。