假设我有这样一个类:
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)});
并将括号中的右值字符串移入arr
。
我应该使用std::initializer_list
,std::vector
还是其他什么?
答案 0 :(得分:1)
将whoami
COMPUTER\myIISPoolUser
certmgr.msc
定义为arr
,将ctor的参数定义为std::vector<std::string>
,主要是您猜到的。