You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

是否可以一行代码完成std::vector的new操作及初始化?

你提到的将动态分配std::vector和初始化合并为一行的写法完全可行,这是C++11及更高版本标准提供的合法语法。

语法说明

你给出的示例写法是标准的列表初始化用法:

std::vector<int>* vec = new std::vector<int>(){3, 4};

甚至可以省略冗余的圆括号,简化为以下写法,效果完全一致:

std::vector<int>* vec = new std::vector<int>{3, 4};

两种写法都会在动态分配vector对象的同时,直接用大括号内的元素完成初始化,不需要后续调用push_back逐个插入元素。

注意事项

  • 该特性仅支持C++11及以上的标准版本,若使用旧版本编译器需要手动开启对应编译选项,例如GCC/Clang需添加-std=c++11(或更高版本如-std=c++17)编译参数
  • 你给出的分步示例中存在笔误:vec->puch_back(4)应为vec->push_back(4)
  • 若没有必须使用裸指针的特殊场景,更推荐直接使用栈上vector对象:std::vector<int> vec{3, 4};,或用智能指针管理动态分配的vector,避免手动管理内存引发的泄漏、野指针等问题

内容的提问来源于stack exchange,提问作者Hu Xixi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 22:18:01