IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SL & STL C++ Discussion :

Algorithmes sur des conteneurs de pointeurs


Sujet :

SL & STL C++

  1. #1
    Membre averti Avatar de Trunks
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2004
    Messages
    534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2004
    Messages : 534
    Points : 412
    Points
    412
    Par défaut Algorithmes sur des conteneurs de pointeurs
    J'aimerais utiliser des algorithmes de sur un conteneur de pointeurs.

    Y a-t-il un adaptateur pour ça?

    Exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    #include <iostream>
    #include <vector>
    #include <algorithm>
    #include <functional>
     
    using namespace std;
     
    int main( )
    {
    	int val1 = 172;
    	int val2 = 168;
    	int val3 = 0;
    	int val4 = 1;
     
    	vector<int*> vpi;
    	vpi.push_back(&val1);
    	vpi.push_back(&val2);
    	vpi.push_back(&val3);
    	vpi.push_back(&val4);
     
    	copy(vpi.begin(), vpi.end(), ostream_iterator<int*>(cout, " "));
    	cout << endl;
     
    	vpi.erase(remove_if(vpi.begin(), vpi.end(), bind2nd(equal_to<int*>(), &val2)));
     
    	copy(vpi.begin(), vpi.end(), ostream_iterator<int*>(cout, " "));
    	cout << endl;
     
    	return 0;
    }
    Au lieu de travailler sur les pointeurs, je veux travailler sur les objets pointés (ici un simple int)

  2. #2
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    Boost.Intrusive ?

  3. #3
    Membre chevronné
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Points : 2 107
    Points
    2 107
    Par défaut
    Hum... Dès lors pourquoi ne pas utiliser boost::ptr_vector qui permet d'utiliser des pointeurs tout en l'utilisant comme un std::vector ?

  4. #4
    Membre averti Avatar de Trunks
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2004
    Messages
    534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2004
    Messages : 534
    Points : 412
    Points
    412
    Par défaut
    Je me pencherai vers boost un jour ou l'autre, quand j'aurais le temps

    Merci pour les pistes, j'ai fait autrement en attendant.

  5. #5
    Membre éprouvé
    Inscrit en
    Avril 2005
    Messages
    1 110
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 1 110
    Points : 937
    Points
    937
    Par défaut
    Citation Envoyé par Trunks Voir le message
    Je me pencherai vers boost un jour ou l'autre, quand j'aurais le temps
    C'est un peu comme moi
    C'est vrai que c'est une habitude du forum. Bien souvent quand on pose une question C++/stl on nous répond "boost".

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    780
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 780
    Points : 1 174
    Points
    1 174
    Par défaut
    Citation Envoyé par camboui Voir le message
    C'est un peu comme moi
    C'est vrai que c'est une habitude du forum. Bien souvent quand on pose une question C++/stl on nous répond "boost".
    oui parce que pour faire des trucs avec des pointeurs, c'est beaucoup plus safe en utilisant boost.

  7. #7
    Membre averti Avatar de Trunks
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2004
    Messages
    534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2004
    Messages : 534
    Points : 412
    Points
    412
    Par défaut
    Vivement C++0x qu'une partie de la librairie boost devienne standard

  8. #8
    Membre chevronné
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Points : 2 107
    Points
    2 107
    Par défaut
    Citation Envoyé par Trunks Voir le message
    Vivement C++0x qu'une partie de la librairie boost devienne standard
    C'est déjà fait (TR1). Le TR1 est déjà implémenté dans quelques compilos (Visual 2008, et gcc 4.x)

  9. #9
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 632
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 632
    Points : 30 708
    Points
    30 708
    Par défaut
    Salut,
    Citation Envoyé par poukill Voir le message
    C'est déjà fait (TR1). Le TR1 est déjà implémenté dans quelques compilos (Visual 2008, et gcc 4.x)
    Sauf que TR1 ne vient pas de C++0x, mais bien de C++95

    Sauf erreur, il est paru (terminé) en 2005, pour ajouter certaines possibilités qui avaient été écartées de la norme du fait du manque de temps qui restait au comité pour respecter la "deadline" pour le standard

    Entre temps, boost est apparu, a montré son utilité et a charmé le comité pour certaines de ses parties, ce qui a incité le comité à les utiliser directement plutôt que de s'amuser à "réinventer la roue"...

    C'est dans cet optique que C++0x va inclure d'autres parties de boost, jugées utiles et suffisamment abouties pour éviter les risque lors de l'utilisation sous la forme de "standard"

  10. #10
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Points : 16 213
    Points
    16 213
    Par défaut
    Dans TR1 :
    - shared_ptr/weak_ptr : Issus de boost
    - Les conteneurs avec clef de hash : Pas eu le temps en 98
    - Les fonctions mathématiques avancées : Pour suivre la norme C
    - Ref wrapper, function, bind : Issus de boost
    - Type_traits : Issus de boost
    - Regex : Issus de boost
    - Array : Issus de boost
    - Tuple : Issus de boost
    - Random : Issus de boost

    On peut donc dire qu'une bonne partie de tR1 est issue de boost. Ce que je trouve dommage, c'est qu'il n'y ait pas plus de bouts de boost dans C++0x (j'aurais aimé y voir date_time et filesystem au moins, mais les gens de boost y étaient opposés. Peut-être dans TR2 ?).

    Par contre, des besoins "à la boost" ont influé sur des évolutions du langage pour C++0x (variadic templates), et d'autres points sont issus du diagnostic qu'une solution bibliothèque a des limites (lambdas, static_assert, initializer_list).

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 15
    Dernier message: 25/10/2009, 23h02
  2. Pointeur sur des fonctions membres d'une classe
    Par Muetdhiver dans le forum C++
    Réponses: 3
    Dernier message: 15/02/2006, 12h35
  3. Pointeur sur des windows form
    Par durans dans le forum MFC
    Réponses: 1
    Dernier message: 03/02/2006, 16h27
  4. Problème de *pointeur sur des char
    Par Spartan03 dans le forum C++
    Réponses: 2
    Dernier message: 18/09/2005, 15h20
  5. vector de pointeurs sur des objet
    Par jean-bobby dans le forum SL & STL
    Réponses: 26
    Dernier message: 06/08/2004, 15h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo