2017-10-15 7 views
-1

私は2次元ベクトルvector<vector<string> tokensArray;を持っており、マップの各要素をmap<string, vector<string>> tokens;に入れたいと思います。これを行う最速の方法は何でしょうか? map<*string*, vector<string>>の文字列がtokensArray[any number][0]で、map <string, *vector<string*>>のベクトルがtokensArray[any number][1, 2, 3, etc]で構成されている場所にしたいと思います。2次元ベクトルから地図に情報を転送する最速の方法は何でしょうか?

はとてもベクトルであった場合:マップは次のようにする必要があります

vector<vector<string> tokensArray = { {"hello", "person", "word"} {"bye", "people", "sentence"} } 

map<string, vector<string>> tokens; 
tokens["hello"] = {"person", "word"}; 
tokens["bye"] = {"people", "sentence"}; 
+0

あなたはそのためのループを必要とし、それを書くことは、私が試した –

+0

@BasileStarynkevitch雅明らかです{tokensArray [i] [0]] = {tokensArray [i] [j]){for {int j ....} { トークン[tokensArray [i] [0]]のように、 }; } ' 私はエラーが発生しました:ベクトル添え字が範囲外です –

+1

@Low_level_dirつまり、iまたはjのいずれかがインデックスを作成しているベクトルのサイズよりも大きいことを意味します。内側forループが停止条件として 'j bnaecker

答えて

0
 map<string, vector<string>> tokens; 
    for (auto &v : input) { 
     if (v.size() > 1) { 
      tokens[v[0]] = vector<string>(v.begin() + 1, v.end()); // Create a new vector copy starting from second index. 
     } 
    } 
関連する問題