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

C++ Discussion :

Nouvelle erreur de compil pour me rendre fou (ou plus)


Sujet :

C++

  1. #1
    Membre éprouvé

    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 448
    Points : 1 234
    Points
    1 234
    Par défaut Nouvelle erreur de compil pour me rendre fou (ou plus)
    Le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    
    	// Trouver la KF la plus proche inférieur ou égale à frameNumber
    	map<long,long>::iterator it = index->upper_bound(frameNumber);
    	it--;
    	// Si aucune KF
    	if (it < index->begin()) {
    		// le prevRaster devient l'image vide
    		delete prevRaster;
    		prevRaster = new RasterLike(*getEmptyRaster());
    		prevRasterFrameNumber = frameNumber;
    
    		return prevRaster;
    	}
    Le cauchemard :


    cov001.cpp
    f:\program files\avisynth 2.5\avisynth_256_src\avsdll\cov001.cpp(227) : error C2784: 'bool std::operator <(const std::_Tree<_Traits> &,const std::_Tree<_Traits> &)' : impossible de déduire l'argument modèle pour 'const std::_Tree<_Traits> &' à partir de 'std::_Tree<_Traits>::iterator'
    with
    [
    _Traits=std::_Tmap_traits<long,long,std::less<long>,std::allocator<std::pair<const long,long>>,false>
    ]
    f:\program files\microsoft visual studio 8\vc\include\xtree(1372) : voir la déclaration de 'std::operator <'

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    C'est pourtant assez explicite, l'opérateur < n'est pas défini pour ce type d'itérateurs. Il ne l'est que pour les itérateurs de type "accès aléatoire" (? à vérifier), ceux des vector (uniquement ?) en l'occurence.

    Si l'élément que tu recherches n'existe pas, alors ton itérateur vaudra index->end(). C'est le seul itérateur non valide qu'un conteneur de la STL pourra jamais te renvoyer.

  3. #3
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 279
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 279
    Points : 11 015
    Points
    11 015
    Par défaut
    Citation Envoyé par Laurent Gomila
    (uniquement ?)
    Nope. Ceux des tableaux statiques aussi : un pointeur est un itérateur trivial à accès direct.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    int i[42];
    assert(boost::begin(i) < boost::end(i));

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    258
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 258
    Points : 307
    Points
    307
    Par défaut
    Citation Envoyé par Laurent Gomila
    Il ne l'est que pour les itérateurs de type "accès aléatoire" (? à vérifier)
    C'est le cas, en tout cas selon SGI http://www.sgi.com/tech/stl/RandomAccessIterator.html

    Citation Envoyé par Laurent Gomila
    ceux des vector (uniquement ?) en l'occurence.
    Et deque aussi.

  5. #5
    Membre éprouvé

    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 448
    Points : 1 234
    Points
    1 234
    Par défaut
    Y a t'il un substitu à cette opération ?

  6. #6
    Membre éprouvé
    Avatar de SnakemaN
    Profil pro
    Bidouille-tout Android
    Inscrit en
    Juillet 2006
    Messages
    871
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Bidouille-tout Android

    Informations forums :
    Inscription : Juillet 2006
    Messages : 871
    Points : 1 118
    Points
    1 118
    Par défaut
    Boost ne peux pas t'aider dans ce cas ?

  7. #7
    Membre éprouvé

    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 448
    Points : 1 234
    Points
    1 234
    Par défaut
    Citation Envoyé par SnakemaN
    Boost ne peux pas t'aider dans ce cas ?
    Boost n'est pas encore le standard actuel et je préfère ne pas simplement esquiver les problèmes ^^

  8. #8
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Citation Envoyé par Sergejack
    Y a t'il un substitu à cette opération ?
    Citation Envoyé par Moi
    Si l'élément que tu recherches n'existe pas, alors ton itérateur vaudra index->end(). C'est le seul itérateur non valide qu'un conteneur de la STL pourra jamais te renvoyer.

  9. #9
    Membre éprouvé

    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 448
    Points : 1 234
    Points
    1 234
    Par défaut
    strcomp ("C'est le seul itérateur non valide qu'un conteneur de la STL pourra jamais te renvoyer.", "Il n'y a pas d'autres solutions.") != 0

  10. #10
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 279
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 279
    Points : 11 015
    Points
    11 015
    Par défaut
    Et si tu comparais it à begin avant de le décrémenter ?

    Sinon, je préfère généralement equal_range qui apporte bien plus d'informations utiles que lower_bound et upper_bound n'en apportent isolément.

  11. #11
    Membre éprouvé

    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 448
    Points : 1 234
    Points
    1 234
    Par défaut
    Citation Envoyé par Luc Hermitte
    Et si tu comparais it à begin avant de le décrémenter ?

    Sinon, je préfère généralement equal_range qui apporte bien plus d'informations utiles que lower_bound et upper_bound n'en apportent isolément.
    C'est ce que j'ai fait, mais j'espèrais en apprendre d'avantage en laissant la question posée.
    Faut pas rêver donc, je vais marquer le sujet comme résolu.

  12. #12
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 279
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 279
    Points : 11 015
    Points
    11 015
    Par défaut
    Au fait. A lire ton commentaire... pourquoi tu n'utilises pas lower_bound plutôt ?

  13. #13
    Membre éprouvé

    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 448
    Points : 1 234
    Points
    1 234
    Par défaut
    Citation Envoyé par Luc Hermitte
    Au fait. A lire ton commentaire... pourquoi tu n'utilises pas lower_bound plutôt ?
    Il me faut la première valeur égale ou inférieure à la clé, donc upper + -1.

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

Discussions similaires

  1. Erreur de compilation (pour tous les programmes)
    Par LittleWhite dans le forum Qt
    Réponses: 10
    Dernier message: 28/11/2010, 12h46
  2. [JAX WS] Erreur de compilation pour les classes générées
    Par seigneur.viggen dans le forum Services Web
    Réponses: 2
    Dernier message: 07/08/2009, 12h52
  3. erreur de compil pour curl
    Par webfranc dans le forum Bibliothèques
    Réponses: 0
    Dernier message: 12/12/2008, 21h22
  4. Erreur à la compilation pour un bouton créé dynamiquement
    Par echap2000 dans le forum C++Builder
    Réponses: 5
    Dernier message: 20/08/2008, 17h23
  5. Réponses: 2
    Dernier message: 30/05/2008, 11h56

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