我想創建一個結構,它包含不同的字符串,併爲它們中的每一個分配一些(而不是一個唯一的)int值。在填充了這個結構之後,我想檢查每個字符串有多少不同的int分配給了它們,以及它們究竟是哪一個。我知道可以用multimap解決這個問題。然而,我不確定是否有可能將所有不同的字符串包含到multimap中,因爲函數「find」需要一個匹配參數,而我不知道何時可以搜索哪些不同的值多重映射。這怎麼能用multimap來完成?C++在multimap中查找鍵和值
作爲一種替代解決方案,我嘗試使用帶矢量的簡單地圖作爲值。然而,我仍然無法做到這一點,因爲向量的迭代器似乎沒有被識別,它表明我:迭代器必須有一個指向類類型的指針。
map<string, vector<int>>::iterator multit;
int candID1, candID2, candID3;
for(multit=Freq.begin(); multit!=Freq.end(); multit++)
{
if((*multit).second.size()==3)
{
vector<int> vectorWithIds = (*multit).second;
for(vector<int>::iterator it = vectorWithIds.begin();
it != vectorWithIds.end();it++)
{
candID1 = it-> Problem: The iterator is not recognized
}
}
}
任何人都可以檢測到問題?第一種方式還是第二種方式有沒有可行的解決方案?
不應該在for循環中使用'* it'而不是'it->'嗎? – Viruzzo
你的示例是一個非常糟糕的設計,試着用一個函子來使用stl like for_each – melbic