Supposons que j'ai une classe comme ceci:La meilleure façon de stocker et construire ensemble de const membres ou des chaînes
class foo {
const A arr;
foo(B arg): arr(arg) { }
};
Quel est le choix le plus efficace pour les types de A
et B
. Je pensais quelque chose comme ça,
class foo {
const std::initializer_list<std::string> arr;
foo(std::initializer_list<std::string> arg): arr(arg) { }
};
Mais je pense que cela va copier-construire des chaînes dans arr
. Je voudrais être en mesure de le faire:
std::string str1("there"), str2("now");
foo bar({"hello",str1,std::move(str2)});
et ont des chaînes rvalue dans les crochets déplacés dans arr
. Dois-je utiliser std::initializer_list
ou std::vector
ou autre chose?
N'utilisez pas 'initializer_list' en tant que membre. 'initializer_list' est ** pas ** un conteneur, il ne gère pas le stockage, il ne fait référence qu'à un tableau alloué de manière externe. C'est pour _initialiser_ les choses, pas pour stocker des choses. L'indice est dans le nom. –