Vector C+中带有向量的关联数组+;

Vector C+中带有向量的关联数组+;,vector,maps,associative-array,Vector,Maps,Associative Array,我需要用一个向量来实现我的地图。我的地图布局如下: map<strong,double> mapName; map地图名; 我需要转换成向量,这样我可以通过元素进行线性搜索 提前感谢您的时间。您不必转换为向量来进行线性搜索。你可以使用C++迭代器来抓取地图的开头和结尾,然后用第一和第二个键访问值和值。 例如: for (map<strong, double>::iterator ii = mapName.begin(); ii!=mapName.end()

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

map<strong,double> mapName;
map地图名;
我需要转换成向量,这样我可以通过元素进行线性搜索


提前感谢您的时间。

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

例如:

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.
}
for(map::iterator ii=mapName.begin();
ii!=mapName.end();ii++){

cout first您可以使用vector的range构造函数轻松地转换为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());
地图项目\u地图;
//…填充项目映射。。。
//将元素复制到向量。
向量item_向量(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.
 }
typedef映射::迭代器迭代器;
迭代器current=item_map.begin();
常量迭代器end=item_map.end();
对于(;当前!=结束;++当前){
//当前->第一个是“字符串”部分。
//当前->秒是“双”部分。
}