2010-11-25 7 views
4

Quel genre de méthode de collecte stockerait une paire (clé et la valeur) où la clé est pas unique (qui ne techniquement pense en fait pas une clé I)?C++ Collections: comment créer une carte comme la structure

Quelque part dans mon programme j'ai:

typedef struct 
{ 
    int nKey; 
    string strFormType; 
} KeyPair; 

Ensuite, je vais stocker des objets dans un vecteur en utilisant cette structure.

vector<KeyPair> vKeyList; 
KeyPair MenuOne; 
MenuOne.nKey = 1; 
MenuOne.strFormType = "Window"; 
vKeyList.push_back(MenuOne);  

MenuOne.nKey = 0; 
MenuOne.strFormType = "Window2"; 
vKeyList.push_back(MenuOne); 

MenuOne.nKey = 1; 
MenuOne.strFormType = "WindowC"; 
vKeyList.push_back(MenuOne);  

C'est fondamentalement comment je veux stocker des objets dans le vecteur. Mon problème est, si je dois stocker comme une centaine de KeyPairs, je devrais le faire dans une boucle et juste lire les KeyPairs d'un stockage puis pousser le retour le vecteur.

si je dois stocker ces paires de clés:

KEY WINDOW 
1 Window 
0 Window2 
1 WindowC 
3 Windowfoo 
1 Window 
and so on... 

Je ne pouvais pas le stocker dans une carte parce que vous devez avoir une clé unique. Les clés des KeyPairs que je possède ne sont pas uniques. Toute suggestion?

+0

Utiliser 'multimap' comme Ignacio Vazquez-Abrams a suggéré, ou garder le vecteur triés et utiliser' lower_bound'. – dalle

Répondre

Questions connexes