我需要用矢量来实现我的地图。我的地图布局如下:
map<strong,double> mapName;
我需要转换为向量,以便可以对元素进行线性搜索。
提前感谢您的时间。
我需要用矢量来实现我的地图。我的地图布局如下:
map<strong,double> mapName;
我需要转换为向量,以便可以对元素进行线性搜索。
提前感谢您的时间。
您可以使用向量的范围构造函数轻松转换为向量,如下所示:
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.
}
您不必转换为矢量即可进行线性搜索。您可以使用 C++ 迭代器来获取映射的开头和结尾,然后使用 first 和 second 访问键和值。
例如:
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.
}