[解決済み] STLでマップの値をベクターにコピーする [重複]。
2023-02-05 21:14:12
質問
現在、Effective STLを読み進めています。項目5では、通常、単一要素の対応するものよりも範囲メンバ関数を使用することが望ましいと示唆しています。私は現在、マップ内のすべての値(つまり、私はキーを必要としない)をベクトルにコピーしたいと考えています。
これを行うための最もきれいな方法は何ですか?
どのように解決するのですか?
mapから得られるイテレータはstd::pairを参照し、vectorに挿入するために使用するイテレータはvectorに格納された型のオブジェクトを参照し、(キーを破棄している場合)pairではないので、ここで簡単に範囲を使用することはできません。
私は本当に、明白なことよりもずっときれいになるとは思いません。
#include <map>
#include <vector>
#include <string>
using namespace std;
int main() {
typedef map <string, int> MapType;
MapType m;
vector <int> v;
// populate map somehow
for( MapType::iterator it = m.begin(); it != m.end(); ++it ) {
v.push_back( it->second );
}
}
というのは、もしこれを何度も使うのであれば、テンプレート関数として書き直すでしょう。こんな感じ。
template <typename M, typename V>
void MapToVec( const M & m, V & v ) {
for( typename M::const_iterator it = m.begin(); it != m.end(); ++it ) {
v.push_back( it->second );
}
}
関連
-
[解決済み] string does not name a type Errorが発生するのはなぜですか?
-
[解決済み】変数 '' を抽象型 '' と宣言できない。
-
[解決済み】エラー:strcpyがこのスコープで宣言されていない
-
[解決済み] コピーアンドスワップ慣用句とは?
-
[解決済み] std::vectorをハードコードされた要素で初期化する最も簡単な方法は何ですか?
-
[解決済み] std::vector<> からインデックスで要素を消すにはどうしたらいいですか?
-
[解決済み] C++ std::map に指定されたキーが存在するかどうかを調べる方法
-
[解決済み] STL」と「C++ Standard Library」の違いは?
-
[解決済み】STLにおけるvectorとlistの比較
-
[解決済み] ベクトルから要素を消去する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】 unsigned int vs. size_t
-
[解決済み】構造体のベクター初期化について
-
[解決済み】coutはstdのメンバではない
-
[解決済み】C-stringを使用すると警告が表示される。"ローカル変数に関連するスタックメモリのアドレスが返される"
-
[解決済み】C++のGetlineの問題(オーバーロードされた関数 "getline "のインスタンスがない
-
[解決済み】抽象クラス型の無効なnew-expression
-
[解決済み】浮動小数点例外エラーが発生する: 8
-
[解決済み】std::cin.getline( ) vs. std::cin
-
[解決済み】システムが指定されたファイルを見つけられませんでした。
-
[解決済み】std::mapからすべてのキー(または値)を取得し、それらをベクトルに入れるには?