![](/img/trans.png)
[英]Iterating over std::map<X,std::vector<Y> > and sorting the vectors
[英]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
(我认为是某种结构) Record
到Record
。 将一组记录分配给单个记录是没有意义的。
您能描述一下您期望地图条目包含的内容吗?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.