weixin_50947427 2023-04-29 12:23 采纳率: 66.7%
浏览 31
已结题

cpp当中的make_shared函数不能用初始化列表做参数吗?为什么?

查了一下vector是有以初始化列表为参数的构造函数的,下面语句正确的:

vector<string> v({"str1","str2"});

但当我以初始化列表为make_shared参数的时候报错了,下面语句是错误的:


auto ptr=make_shared<vector<string>>({"str1","str2"});

初学者,请问是我对make_shared的理解错了吗?

  • 写回答

1条回答 默认 最新

  • Loup&卡普 2023-07-10 22:39
    关注

    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?


    如果有用麻烦给个采纳,谢谢~

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 7月19日
  • 已采纳回答 7月11日
  • 创建了问题 4月29日

悬赏问题

  • ¥15 单纯型python实现编译报错
  • ¥15 c++2013读写oracle
  • ¥15 c++ gmssl sm2验签demo
  • ¥15 关于模的完全剩余系(关键词-数学方法)
  • ¥15 有没有人懂这个博图程序怎么写,还要跟SFB连接,真的不会,求帮助
  • ¥15 PVE8.2.7无法成功使用a5000的vGPU,什么原因
  • ¥15 is not in the mmseg::model registry。报错,模型注册表找不到自定义模块。
  • ¥15 安装quartus II18.1时弹出此error,怎么解决?
  • ¥15 keil官网下载psn序列号在哪
  • ¥15 想用adb命令做一个通话软件,播放录音