OVH Cloud OVH Cloud

Initialisation de std::vector

3 réponses
Avatar
korchkidu
Bonjour,

une question sans doute debile mais je veux faire:

const std::string mesChaines[3] = {"1", "2", "3"};

mais avec un std::vector et sans utiliser push_back.

Comment qu'on fait ca???

Merci,
K.

3 réponses

Avatar
Cyrille
Bonjour,

une question sans doute debile mais je veux faire:

const std::string mesChaines[3] = {"1", "2", "3"};

mais avec un std::vector et sans utiliser push_back.

Comment qu'on fait ca???


const std::string mesChaines[3] = {"1", "2", "3"};
std::vector<std::string> vecChaines(mesChaines, mesChaines+3);

autre possibilité, avec la librairie Boost.Assign:

using namespace boost::assign;
std::vector<std::string> vecChaines2;
vecChaines2 += "1", "2", "3";

--
win the yes need the no to win against the no!

Avatar
korchkidu
Cyrille wrote:

Bonjour,

une question sans doute debile mais je veux faire:

const std::string mesChaines[3] = {"1", "2", "3"};

mais avec un std::vector et sans utiliser push_back.

Comment qu'on fait ca???



const std::string mesChaines[3] = {"1", "2", "3"};
std::vector<std::string> vecChaines(mesChaines, mesChaines+3);

autre possibilité, avec la librairie Boost.Assign:

using namespace boost::assign;
std::vector<std::string> vecChaines2;
vecChaines2 += "1", "2", "3";

Merci beaucoup,

K.


Avatar
James Kanze
Cyrille wrote:

une question sans doute debile mais je veux faire:



const std::string mesChaines[3] = {"1", "2", "3"};



mais avec un std::vector et sans utiliser push_back.



Comment qu'on fait ca???



const std::string mesChaines[3] = {"1", "2", "3"};
std::vector<std::string> vecChaines(mesChaines, mesChaines+3);


Dans ce cas-ci, j'utiliserais plutôt des char const* dans le
premier tableau, c-à-d :

char const* const mesChainess[] = { "1", "2", "3" } ;
std::vector< std::string > vecChaines(
begin( mesChaines ), end( mesChaines ) ) ;

(Où begin() et end() sont des fonctions template classiques pour
obtenir le début et la fin d'un tableau C.)

autre possibilité, avec la librairie Boost.Assign:


using namespace boost::assign;
std::vector<std::string> vecChaines2;
vecChaines2 += "1", "2", "3";


Tiens, tiens, tiens. C'est la première fois que je vois quelque
chose dans Boost qu'il vaut mieux éviter dans tous les cas.
(Parfois, j'évite Boost parce que mon compilateur ne suit pas.
Mais le problème-là, ce n'est pas dans Boost.)

--
James Kanze mailto:
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 pl. Pierre Sémard, 78210 St.-Cyr-l'École, France +33 (0)1 30 23 00 34