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

如何通过vector构造函数一行初始化包含Protobuf对象的向量?

一行代码构造含Protobuf对象的vector

当然可以用一行代码直接通过vector的构造函数实现,完全替代你原来的两行写法:

std::vector<someproto> vector_protos(1);

这行代码会直接构造一个包含1个默认构造的someproto对象的vector,和你先声明空vector再调用emplace_back()的效果完全一致。原因是Protobuf自动生成的类都支持默认构造,而std::vector的这个构造函数(接受元素数量的版本)会为每个元素调用默认构造函数,完成对象初始化。

如果需要一次性创建多个默认构造的Protobuf对象,只需要修改数字即可:

// 创建包含5个默认someproto对象的vector
std::vector<someproto> vector_protos(5);

要是你需要用某个预先初始化好的Protobuf对象来填充vector,还可以用vector的另一个构造函数:

someproto pre_init_proto;
pre_init_proto.set_your_field("some_value");
// 创建包含3个拷贝自pre_init_proto的对象的vector
std::vector<someproto> vector_protos(3, pre_init_proto);

内容的提问来源于stack exchange,提问作者A. Fenzry

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 18:58:12