我想在map函数中声明n数组struct。下面的代码片段,当我试图做m_channelInfo [destination] = newdata [chNum]时,它给我一个错误。错误是, "没有运营商匹配" ="操作数"我很困惑如何解决这个问题,或者我不能使用struct indie数组来映射函数。请建议。
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 ());
}
答案 0 :(得分:0)
将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[]
正确删除内存
答案 1 :(得分:0)
在C ++中,数组必须在编译时具有已知的大小。 Record newdata[chNum];
是非法的。 (有些编译器将其作为扩展实现,但使用它并不可取。)
目前尚不清楚你在这里要做什么:
m_channelInfo[destination] = newdata;
你的地图将Mac48Address
(我认为是某种形式的结构)带到Record
。将一组记录分配给单个记录是没有意义的。
您能描述一下您希望地图条目包含的内容吗?