2016-03-19 11 views
0

のキーmy_typeのマップを宣言するとします(「my_type」は、ベクターが異種であることを可能にする複数の異なるタイプになることができるクラスです)。そのようなmy_typeのベクトルへのポインタのベクトルへのマッピング、:マップ内のベクトルの値をプッシュバックすることはできますか? C++

unordered_map<my_type, vector<vector<my_type>*>> my_map; 

そして、私は以下のベクターがあります

vector<my_type> vec1 = {"Adam", 1} 
vector<my_type> vec2 = {"Kevin", 2} 
vector<my_type> vec3 = {"Kevin", 3} 
vector<my_type> vec4 = {"Kevin", 4} 
vector<my_type> vec5 = {"Richard", 5} 
vector<my_type> vec6 = {"Sam", 6} 

を今度は私が値としてこれらのベクターのそれぞれに追加したいとしましょうunordered_mapにインデックス0の文字列名をそれぞれのキーとして渡します。私の目的は、unordered_mapに同じキーを持つ可能性のある複数のベクトルを格納できるようにすることです(マルチマップを使用しない場合を除き、マルチマップの動作と同じです)。

各ベクトル(vec1、vec2、... vec6)へのポインタが、指定されたキーに対応するマップのベクトルにプッシュバックされるようにしたいと考えています。キーが既に値へのポインタを含んでいるベクトルを指しているならば、新しい値へのポインタをそのベクトルの後ろにプッシュしたいので、両方とも本質的に同じキーを共有して2つにすることができます。次に、ベクトルをインデックスすることによって、同じキーの重複値にすべて1つのマップでアクセスすることを望みます。

本質的に、キー「Kevin」は、ポインタ0〜> vec2のポインタ、インデックス1〜> vec3のポインタ、およびインデックス2〜> vec4のポインタを指します。

これを行うことは可能でしょうか?いくつかの構文の例が分かるでしょう。また、私はこれがマルチマップで達成できることを認識していますが、私はいくつかの理由でこれを行わないようにしようとしています。ありがとう、私は私の質問が理にかなってほしいと思う。

+0

さまざまな方法で誤って導入する複雑さを除いて問題はありません。例えば。私はベクトルへのポインタを使用せず、単にベクトルにします。 –

+0

@ Cheersandhth.-Alfそれは良い点です。マップ内のベクターにどの程度正確にアクセスして値をプッシュバックできるかを説明できますか?それは私が混乱していることです。 – user5482356

+0

「マップ<キー、ベクトル>」タイプのマップ「m」が与えられている。 'm [key] .push_back(value)'です。 –

答えて

0

各ベクトル(vec1、vec2、... vec6)へのポインタが、指定されたキーに対応するマップのベクトルにプッシュバックされるようにしたいと思います。言っ

my_map["Adam"].push_back(&vec1); 
my_map["Kevin"].push_back(&vec2); 
my_map["Kevin"].push_back(&vec3); 
my_map["Kevin"].push_back(&vec4); 
...etc... 

、アルフの権利 - 「tは通常my_mapがスコープ外になった場合、自身のデータを所有し、それを割り当て解除することが適切、独立変数をポインタを避け、my_mapを持っている方がよいが、-ed newですdelete -dなど。

関連する問題