簡體   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