 |
C++Talk.NET C++ language newsgroups
|
| View previous topic :: View next topic |
| Author |
Message |
Moah, full time turnip. Guest
|
Posted: Wed Sep 24, 2003 11:05 pm Post subject: Warning dû à la STL |
|
|
Bonjour,
Je suis en ce moment en train de programmer une application en Borland
C++ Builder, et sa compilation me génère des warnings que je ne sais pas
gérer.
"[C++ Avertissement] Unit1.cpp(585): W8091 Argument template, _InputIter
passé à 'for_each' est un itérateur output : itérateur input requis
Contexte d'analyseur complet
Unit1.cpp(574): analyse :, void TForm1::UpdateDBListBox()"
Le code qui génère cette erreur est le suivant:
{
multiset<DBCard, CardCompare> List;
for_each(List.begin(), List.end(), AddItem);
}
(en fait partout où j'utilise un for_each sur mon multiset)
Donc deux solution: je fais n'importe quoi et je ne m'en rends pas
compte (solution la plus probable) ou Borland fais n'importe quoi et
je ne peux rien (solution peu probable mais possible).
Le fait est que je ne comprends pas bien la différence entre un itéra-
teur d'entrée (input) et un itérateur de sortie (output), ni comment
passer de l'un à l'autre, ni dans quel cas utiliser quoi.
Merci de vos réponses,
Moah, full time turnip.
|
|
| Back to top |
|
 |
Michaël Monerau Guest
|
Posted: Thu Sep 25, 2003 3:59 pm Post subject: Re: Warning dû à la STL |
|
|
Moah, full time turnip. wrote:
| Quote: | Bonjour,
Je suis en ce moment en train de programmer une application en Borland
C++ Builder, et sa compilation me génère des warnings que je ne sais
pas gérer.
"[C++ Avertissement] Unit1.cpp(585): W8091 Argument template,
_InputIter passé à 'for_each' est un itérateur output : itérateur
input requis Contexte d'analyseur complet
Unit1.cpp(574): analyse :, void TForm1::UpdateDBListBox()"
Le code qui génère cette erreur est le suivant:
{
multiset<DBCard, CardCompare> List;
for_each(List.begin(), List.end(), AddItem);
}
|
Qu'est-ce que AddItem ? Un functor ? Précise un peu...
--
<=- Michaël "Cortex" Monerau -=>
|
|
| Back to top |
|
 |
Moah, full time turnip. Guest
|
Posted: Fri Sep 26, 2003 1:37 pm Post subject: Re: Warning dû à la STL |
|
|
Michaël Monerau wrote:
| Quote: | Qu'est-ce que AddItem ? Un functor ? Précise un peu...
|
Voici une implémentation minimaliste qui génère le warning sous Borland.
#include <algorithm>
#include <functional>
#include <set>
using std::multiset;
using std::for_each;
typedef int DBCard;
typedef std::less<DBCard> CardCompare;
void AddItem (DBCard) { }
int main ()
{
multiset<DBCard, CardCompare> List;
for_each(List.begin(), List.end(), AddItem);
}
Moah, full time turnip.
|
|
| Back to top |
|
 |
Michaël Monerau Guest
|
Posted: Fri Sep 26, 2003 2:26 pm Post subject: Re: Warning dû à la STL |
|
|
Moah, full time turnip. wrote:
| Quote: | Michaël Monerau wrote:
Qu'est-ce que AddItem ? Un functor ? Précise un peu...
Voici une implémentation minimaliste qui génère le warning sous
Borland.
#include <algorithm
#include
#include
using std::multiset;
using std::for_each;
typedef int DBCard;
typedef std::less
void AddItem (DBCard) { }
int main ()
{
multiset<DBCard, CardCompare> List;
for_each(List.begin(), List.end(), AddItem);
}
|
Je n'ai aucun problème avec ce code sur VC++ 7.1... Bizarre. Mais je ne
connais pas multiset, donc je ne peux pas trop t'aider...
Un for_each sur un vector marche bien sans warning ?
--
<=- Michaël "Cortex" Monerau -=>
|
|
| Back to top |
|
 |
Moah, full time turnip. Guest
|
Posted: Fri Sep 26, 2003 6:17 pm Post subject: Re: Warning dû à la STL |
|
|
Michaël Monerau wrote:
| Quote: | Je n'ai aucun problème avec ce code sur VC++ 7.1... Bizarre. Mais je ne
connais pas multiset, donc je ne peux pas trop t'aider...
Un for_each sur un vector marche bien sans warning ?
|
Cette version du code ne fournit aucun warning:
#include <algorithm>
#include <functional>
#include <set>
using std::vector;
using std::for_each;
typedef int DBCard;
typedef std::less<DBCard> CardCompare;
void AddItem (DBCard) { }
int main ()
{
vector<DBCard> List;
for_each(List.begin(), List.end(), AddItem);
}
Moah, full time turnip.
|
|
| Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|