C ++中带向量的关联数组

时间:2012-04-29 00:45:39

标签: vector maps associative-array

我需要用矢量来实现我的地图。我的地图布局如下:

map<strong,double> mapName;

我需要转换为矢量,以便我可以通过元素进行线性搜索。

提前感谢您。

2 个答案:

答案 0 :(得分:1)

您可以使用vector的范围构造函数轻松转换为矢量,如下所示:

 map<string,double> item_map;
 // ... populate item map ...

 // copy elements to a vector.
 vector< pair<string,double> > item_vector(item_map.begin(), item_map.end());

但是,如果您只需要进行线性搜索,则无需复制元素。只是对像这样的项目进行迭代:

 typedef map<string,double>::iterator iterator;
 iterator current = item_map.begin();
 const iterator end = item_map.end();
 for (; current != end; ++current) {
     // current->first is the 'string' part.
     // current->second is the 'double' part.
 }

答案 1 :(得分:0)

您无需转换为矢量即可进行线性搜索。您可以使用C ++迭代器来获取地图的开头和结尾,然后使用第一个和第二个访问键和值。

See this

例如:

for (map<strong, double>::iterator ii = mapName.begin(); 
    ii!=mapName.end();ii++) {
      cout << ii->first << endl;  //returns a key
      cou << ii->second << endl; //returns ii->first's current corresponding value.
}