2017-10-15 36 views
-1

所以我有一个2D矢量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]组成的。将信息从2d矢量传送到地图的最快方法是什么?

因此,如果向量是:

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雅我试着使用循环并将它们赋值为'for(int i .....){(int j ....){ token [tokensArray [i] [0]] = {tokensArray [i] [j] }; } 当我这样做时,我得到一个错误:向量下标超出范围 –

+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. 
     } 
    } 
相关问题