查了一下vector是有以初始化列表为参数的构造函数的,下面语句正确的:
vector<string> v({"str1","str2"});
但当我以初始化列表为make_shared参数的时候报错了,下面语句是错误的:
auto ptr=make_shared<vector<string>>({"str1","str2"});
初学者,请问是我对make_shared的理解错了吗?
查了一下vector是有以初始化列表为参数的构造函数的,下面语句正确的:
vector<string> v({"str1","str2"});
但当我以初始化列表为make_shared参数的时候报错了,下面语句是错误的:
auto ptr=make_shared<vector<string>>({"str1","str2"});
初学者,请问是我对make_shared的理解错了吗?
make_shared创建vector时比较特殊 ,因为模板的模板对于 make shared 太复杂了 需要用到 std::initializer_list
initializer_list<string> initlist = {"str1", "str2"};
make_shared<vectot<string>> (initlist);
你可以看看这个
https://www.zhihu.com/question/492029713/answer/2167610442?utm_id=0?
如果有用麻烦给个采纳,谢谢~