2017-10-15 6 views
-1

Donc, j'ai un vecteur 2d vector<vector<string> tokensArray; et je veux mettre chaque élément de celui-ci dans une carte: map<string, vector<string>> tokens;. Quel serait le moyen le plus rapide de le faire? Je voudrais qu'il soit où la chaîne de map<*string*, vector<string>> être tokensArray[any number][0] et le vecteur de map <string, *vector<string*>> pour être composé de tokensArray[any number][1, 2, 3, etc].Quel serait le moyen le plus rapide de transférer des informations d'un vecteur 2D vers une carte?

donc si le vecteur était:

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

la carte doit être comme:

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

Vous avez besoin d'une boucle pour cela, et de l'écriture, il est évident –

+0

@BasileStarynkevitch Ya j'ai essayé en utilisant la boucle et en les affectant comme 'pour (int i .....) { pour (int j ....) { jeton [tokensArray [i] [0]] = {tokensArray [i] [j] } } ' lorsque j'ai fait cela j'ai eu une erreur: l'indice vectoriel est hors plage –

+1

@Low_level_dir Cela signifie que 'i' ou' j' est plus grand que la taille du vecteur que vous indexez. Assurez-vous que votre for-loop interne a pour condition d'arrêt: 'j bnaecker

Répondre

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. 
     } 
    }