构造以向量为值的映射

Constructing a Map With Vectors as Values

本文关键字:映射 向量      更新时间:2023-10-16

我正试图构建一个映射,将字符串映射到无符号整数的向量。我构建这张地图的方式如下:

void PixelP1ROCDACSettings::getDACs(map<string,vector<unsigned int>>& dacs) const
{
    dacs.clear();
    dacs.insert(pair<string, vector<unsigned int> > (k_DACName_Vdd, make_vector(Vdd_, k_DACAddress_Vdd)));
    dacs.insert(pair<string, vector<unsigned int> > (k_DACName_Vana,make_vector(Vana_, k_DACAddress_Vana)));
    ...
}

其中make_vector定义如下:

   std::vector<unsigned int> make_vector(unsigned int DACValue, 
                                         unsigned int DACAddress) const ;

我的问题是:1) 我想访问向量中的每个单独的值,我已经尝试过了,dacs[key][index],但这似乎不起作用。有什么特殊的语法可以做到这一点吗?

2) 此外,我想在我的地图上迭代,我该怎么做?

提前谢谢。

如果您使用的是c++11,则可以使用进行迭代

for (auto& keyvaluepair : dacs) {
     //keyvaluepair.first is your string
     //keyvaluepair.second is your vector
}

dacs[key][index]也是访问key映射到的向量中indexth元素的正确方法。