ベクターでマップを実装する必要があります。私のマップは次のようにレイアウトされています:
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.
}