2010-11-05 6 views
0

J'essaie d'utiliser boost::bind avec la fonction std::sort. Je veux lier trier dans une fonction sans paramètre et spécifier un tableau int pour trier.en utilisant std :: sort avec boost :: bind

Je suis confronté à des problèmes avec le paramètre template à spécifier lors du tri de la liaison. Si j'utilisais un conteneur standard, j'utiliserais simplement std::container<int>::iterator mais comme j'utilise un tableau, je n'arrive pas à savoir quoi faire. utilisation.

Voici un code qui illustre mon problème de compilation:

const int NUM_VALUES = 100; 
    int nums[NUM_VALUES]; 
    for (int i=0; i<NUM_VALUES; ++i) 
    { 
    nums[i] = NUM_VALUES - i; 
    } 
    boost::function<void()> sortHolder = boost::bind(&std::sort<type?>, nums, nums+NUM_VALUES); 

Quelqu'un sait ce que les paramètres modèle à utiliser ici? Toute autre discussion est la bienvenue.

Répondre

2

Lorsque vous voulez "itérateurs" dans un tableau, vous utilisez des pointeurs sur les éléments du tableau. De tels pointeurs peuvent être utilisés comme itérateurs à accès aléatoire:

boost::function<void()> sortHolder = 
    boost::bind(&std::sort<int*>, nums, nums + NUM_VALUES); 
+0

Avez-vous essayé de compiler ceci? – wilhelmtell

+0

@wilhelmtell: Sorte de. Je n'ai pas Boost sur mon lappy donc j'ai utilisé le Visual C++ 2010 '' et j'ai échangé 'std ::' pour 'boost ::' dans la réponse. Est-ce que j'ai muck quelque chose? (Excuses sincères si je l'ai fait: '(si c'est le cas, n'hésitez pas à poster une correction et je vais enlever ceci et augmenter la correction) –

+0

@James le problème ici est que 'std :: sort <>' n'est pas résolu même avec 'std :: sort '. – wilhelmtell

Questions connexes