Предположим, что у меня есть класс, как это:Лучший способ для хранения и построения элемента массива константный или строки
class foo {
const A arr;
foo(B arg): arr(arg) { }
};
Что является наиболее эффективным выбором для типов A
и B
. Я что-то подобное мышление,
class foo {
const std::initializer_list<std::string> arr;
foo(std::initializer_list<std::string> arg): arr(arg) { }
};
Но я думаю, что это будет копировать-строить строки в arr
. Я хотел бы быть в состоянии сделать это:
std::string str1("there"), str2("now");
foo bar({"hello",str1,std::move(str2)});
и имеют RValue строки в скобках переехал в arr
.
Должен ли я использовать std::initializer_list
, или std::vector
, или что-то еще?
Не используйте 'initializer_list' как член. 'initializer_list' является ** не ** контейнером, он не управляет хранилищем, он относится только к внешнему выделенному массиву. Это для _инициализации вещей, а не для хранения вещей. Это ключ от имени. –