2012-05-01 2 views
-1

J'ai quelques questions sur le vecteur;en ajoutant un vecteur à une autre extrémité ET en triant un vecteur

  • Comment puis-je ajouter un vecteur dans une autre extrémité de manière efficace?
  • Comment puis-je trier un vecteur en utilisant la fonction STL si son type est NODE? (Pour NODE, regardez ci-dessous)

    ex

    struct NODE { 
    
          char name; 
    
          .... // other things 
    
    }; 
    
+1

Eh bien, c'est deux questions sans rapport . Un a la fois s'il vous plait. (Et pour les deux: qu'avez-vous essayé/examiné, et qu'est-ce qui n'a pas fonctionné?) – Mat

+1

Pour votre première question, voir http://stackoverflow.com/questions/2551775/c-appending-a-vector-to- a-vector et pour votre deuxième question, voir: http://forums.codeguru.com/showthread.php?t=366064 –

+0

Avez-vous essayé de rechercher ['std vector append'] (http://www.google.co. uk/recherche? q = std + vector + append), ou ['std vector sort'] (http://www.google.co.uk/search?q=std+vector+sort)? –

Répondre

2
  • std::vector::insert() peut être utilisé pour insérer de tout ce qui utilise le genre protocole itérateur
  • std::sort() dans l'ordre croissant et prend une comparaison en option fonction (ou quelque chose avec operator() dessus) qui prend les éléments a et b et devrait retourner vrai si a < b.
2

Pour ajouter un vecteur à l'autre:

myVec.insert(myVec.end(), myVec2.begin(), myVec2.end()); 
// if your compiler supports C++11 you can do: 
myVec.insert(end(myVec), begin(myVec2), end(myVec2)); 

Pour trier votre vecteur:

vector<Node> myVec; 
// add elements... 
sort(myVec.begin(), myVec.end()); 

nœud doit définir l'opérateur <:

bool operator<(const Node & rhs, const Node & lhs){ 
    return rhs.name < lhs.name; 
} 
Questions connexes