繁体   English   中英

std :: map <x,y> :如何在map函数内声明struct(y)数组

[英]std::map<x,y>: How to declare array of struct (y) inside a map function

我想在map函数内声明struct的n数组。 下面是代码段,当我尝试执行m_channelInfo [destination] = newdata [chNum]时,它向我抛出错误。 错误是,“没有运算符匹配“ =操作数”。我对如何解决这个问题感到困惑,或者我无法使用独立于struct函数的struct数组。 请提出建议。

chNum=10;
struct Record
  {
   int pkt;
   double frameErrorRate;
   double ProbabilityVector;

  };


void ChannelUsageData (Mac48Address destination, Mac48Address retransmitter)
{

  std::map<Mac48Address, Record>::iterator i = m_channelInfo.find (destination); 
  if (i == m_channelInfo.end ())
    {
      Record newdata[chNum];
      // std::vector<Record> newdata;
      //Record newdata;

      m_channelInfo[destination] = newdata;

    }
  i = m_channelInfo.find (destination);
  NS_ASSERT (i != m_channelInfo.end ());

}

m_channelInfo声明为std::map<Max48Address, Record*> ,并将迭代器定义为std::map<Mac48Address, Record*>::iterator i

您还需要将分配更改为动态数组而不是静态数组...

if (i == m_channelInfo.end ())
{
  Record* newdata = new Record[chNum];

  m_channelInfo[destination] = newdata;

}

那么您就可以将值分配为数组(指针),并且不要忘记在销毁过程中使用deleted[]正确删除了内存

在C ++中,数组必须具有在编译时已知的大小。 Record newdata[chNum]; 是非法的。 (某些编译器将其实现为扩展,但实际上不建议使用它)。

目前尚不清楚您要在这里做什么:

 m_channelInfo[destination] = newdata;

您的地图将一个Mac48Address (我认为是某种结构) RecordRecord 将一组记录分配给单个记录是没有意义的。

您能描述一下您期望地图条目包含的内容吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM