Bonjour,
suite à une discussion sur map::insert et de l'utilisation de
map<>::value_type ou de std::make_pair, j'ai n'ai pas réussi à faire un
exemple ou std::make_pair fonctionnerait alors que value_type ne
fonctionnerait pas (gcc ou VS)
J'avais souvenir d'un problème de conversion implicite (Josuttis en
parle dans The C++ Standard Library 2nd Ed, page 341), constaté à
l'époque sur aCC (hpux), notamment avec les std::string et const char*
Aujourd'hui, je n'arrive pas à retrouver ce problème avec ni gcc 4.8 ni
vs2012.
Du coup, je n'ai pas d'argument technique (vu que je n'arrive pas à le
reproduire) pour préférer std::make_pair...
Il reste, que c'est toujours plus court à taper, et moins à du renommage
sur le typedef par exemple.
Quand est-il au niveau de la norme ?
Voici mon exemple qui fonctionne... (avec le explicit ni la forme
value_type ni la forme make_pair fonctionne)
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Marc
David FLEURY wrote:
Bonjour, suite à une discussion sur map::insert et de l'utilisation de map<>::value_type ou de std::make_pair, j'ai n'ai pas réussi à faire un exemple ou std::make_pair fonctionnerait alors que value_type ne fonctionnerait pas (gcc ou VS)
C'est dans l'autre sens que sont les problèmes, make_pair peut facilement ne pas marcher ou faire des copies inutiles.
Aujourd'hui, je n'arrive pas à retrouver ce problème avec ni gcc 4.8 ni vs2012.
Du coup, je n'ai pas d'argument technique (vu que je n'arrive pas à le reproduire) pour préférer std::make_pair...
Je ne pense pas qu'il y en ait de bons. Il y a en revanche des cas amusants où m[i]=j marche "mieux" que m.insert(value_type(i,j)).
Il reste, que c'est toujours plus court à taper, et moins à du renommage sur le typedef par exemple.
emplace est encore plus court à taper, insert(make_pair(,)) est à oublier.
David FLEURY wrote:
Bonjour,
suite à une discussion sur map::insert et de l'utilisation de
map<>::value_type ou de std::make_pair, j'ai n'ai pas réussi à faire un
exemple ou std::make_pair fonctionnerait alors que value_type ne
fonctionnerait pas (gcc ou VS)
C'est dans l'autre sens que sont les problèmes, make_pair peut
facilement ne pas marcher ou faire des copies inutiles.
Aujourd'hui, je n'arrive pas à retrouver ce problème avec ni gcc 4.8 ni
vs2012.
Du coup, je n'ai pas d'argument technique (vu que je n'arrive pas à le
reproduire) pour préférer std::make_pair...
Je ne pense pas qu'il y en ait de bons. Il y a en revanche des cas
amusants où m[i]=j marche "mieux" que m.insert(value_type(i,j)).
Il reste, que c'est toujours plus court à taper, et moins à du renommage
sur le typedef par exemple.
emplace est encore plus court à taper, insert(make_pair(,)) est à
oublier.
Bonjour, suite à une discussion sur map::insert et de l'utilisation de map<>::value_type ou de std::make_pair, j'ai n'ai pas réussi à faire un exemple ou std::make_pair fonctionnerait alors que value_type ne fonctionnerait pas (gcc ou VS)
C'est dans l'autre sens que sont les problèmes, make_pair peut facilement ne pas marcher ou faire des copies inutiles.
Aujourd'hui, je n'arrive pas à retrouver ce problème avec ni gcc 4.8 ni vs2012.
Du coup, je n'ai pas d'argument technique (vu que je n'arrive pas à le reproduire) pour préférer std::make_pair...
Je ne pense pas qu'il y en ait de bons. Il y a en revanche des cas amusants où m[i]=j marche "mieux" que m.insert(value_type(i,j)).
Il reste, que c'est toujours plus court à taper, et moins à du renommage sur le typedef par exemple.
emplace est encore plus court à taper, insert(make_pair(,)) est à oublier.
David FLEURY
Le 12/06/2013 22:53, Marc a écrit :
David FLEURY wrote:
Bonjour, suite à une discussion sur map::insert et de l'utilisation de map<>::value_type ou de std::make_pair, j'ai n'ai pas réussi à faire un exemple ou std::make_pair fonctionnerait alors que value_type ne fonctionnerait pas (gcc ou VS)
C'est dans l'autre sens que sont les problèmes, make_pair peut facilement ne pas marcher
un exemple précis qui ne compilerait pas ? Je ne me souviens pas en avoir croisé un.
ou faire des copies inutiles.
ça ok
Aujourd'hui, je n'arrive pas à retrouver ce problème avec ni gcc 4.8 ni vs2012.
Du coup, je n'ai pas d'argument technique (vu que je n'arrive pas à le reproduire) pour préférer std::make_pair...
Je ne pense pas qu'il y en ait de bons.
Ils seront toujours meilleurs qu'un simple jugement de valeur (c'est plus beau, c'est plus clair, c'est plus lisible...)
Il y a en revanche des cas amusants où m[i]=j marche "mieux" que m.insert(value_type(i,j)).
Je ne connais pas. Je fais une utilisation très basique des maps m[i] = j et insert ne font pas exactement la même chose de toute façon.
Il reste, que c'est toujours plus court à taper, et moins à du renommage sur le typedef par exemple.
emplace est encore plus court à taper, insert(make_pair(,)) est à oublier.
Je n'ai pas encore migrer C++11 (utilisation de plusieurs compilo/os) insert({1,2}) et emplace(1,2) Oui, c'est 2 touches de moins à taper. Je comparerais les copie/move pour voir
Merci pour la réponse. je vais cross-poster sur developpez pour voir.
Le 12/06/2013 22:53, Marc a écrit :
David FLEURY wrote:
Bonjour,
suite à une discussion sur map::insert et de l'utilisation de
map<>::value_type ou de std::make_pair, j'ai n'ai pas réussi à faire un
exemple ou std::make_pair fonctionnerait alors que value_type ne
fonctionnerait pas (gcc ou VS)
C'est dans l'autre sens que sont les problèmes, make_pair peut
facilement ne pas marcher
un exemple précis qui ne compilerait pas ?
Je ne me souviens pas en avoir croisé un.
ou faire des copies inutiles.
ça ok
Aujourd'hui, je n'arrive pas à retrouver ce problème avec ni gcc 4.8 ni
vs2012.
Du coup, je n'ai pas d'argument technique (vu que je n'arrive pas à le
reproduire) pour préférer std::make_pair...
Je ne pense pas qu'il y en ait de bons.
Ils seront toujours meilleurs qu'un simple jugement de valeur (c'est
plus beau, c'est plus clair, c'est plus lisible...)
Il y a en revanche des cas
amusants où m[i]=j marche "mieux" que m.insert(value_type(i,j)).
Je ne connais pas. Je fais une utilisation très basique des maps
m[i] = j et insert ne font pas exactement la même chose de toute façon.
Il reste, que c'est toujours plus court à taper, et moins à du renommage
sur le typedef par exemple.
emplace est encore plus court à taper, insert(make_pair(,)) est à
oublier.
Je n'ai pas encore migrer C++11 (utilisation de plusieurs compilo/os)
insert({1,2}) et emplace(1,2)
Oui, c'est 2 touches de moins à taper.
Je comparerais les copie/move pour voir
Merci pour la réponse.
je vais cross-poster sur developpez pour voir.
Bonjour, suite à une discussion sur map::insert et de l'utilisation de map<>::value_type ou de std::make_pair, j'ai n'ai pas réussi à faire un exemple ou std::make_pair fonctionnerait alors que value_type ne fonctionnerait pas (gcc ou VS)
C'est dans l'autre sens que sont les problèmes, make_pair peut facilement ne pas marcher
un exemple précis qui ne compilerait pas ? Je ne me souviens pas en avoir croisé un.
ou faire des copies inutiles.
ça ok
Aujourd'hui, je n'arrive pas à retrouver ce problème avec ni gcc 4.8 ni vs2012.
Du coup, je n'ai pas d'argument technique (vu que je n'arrive pas à le reproduire) pour préférer std::make_pair...
Je ne pense pas qu'il y en ait de bons.
Ils seront toujours meilleurs qu'un simple jugement de valeur (c'est plus beau, c'est plus clair, c'est plus lisible...)
Il y a en revanche des cas amusants où m[i]=j marche "mieux" que m.insert(value_type(i,j)).
Je ne connais pas. Je fais une utilisation très basique des maps m[i] = j et insert ne font pas exactement la même chose de toute façon.
Il reste, que c'est toujours plus court à taper, et moins à du renommage sur le typedef par exemple.
emplace est encore plus court à taper, insert(make_pair(,)) est à oublier.
Je n'ai pas encore migrer C++11 (utilisation de plusieurs compilo/os) insert({1,2}) et emplace(1,2) Oui, c'est 2 touches de moins à taper. Je comparerais les copie/move pour voir
Merci pour la réponse. je vais cross-poster sur developpez pour voir.
ptyxs
Le 12/06/2013 19:04, David FLEURY a écrit :
Quand est-il au niveau de la norme ?
Tu voulais dire 'Qu'en est-il au niveau de la norme ?' j'imagine ?
Le 12/06/2013 19:04, David FLEURY a écrit :
Quand est-il au niveau de la norme ?
Tu voulais dire 'Qu'en est-il au niveau de la norme ?' j'imagine ?