gpt4 book ai didi

c++ - 如何将聚合初始化列表推送到 vector 中?

转载 作者:行者123 更新时间:2023-11-28 00:32:05 26 4
gpt4 key购买 nike

我想写这样的东西:

vector<iovec> iovecs;
iovec io = {&foo, sizeof(foo)};
iovevs.push_base(io);

这对编译器来说没问题。

现在我想把它改造成更简洁的东西,像这样:

 vector<iovec> iovecs;
iovecs.push_back({&foo, sizeof(foo)});

但是我被拒绝了,错误信息如下:

warning: extended initializer lists only available with -std=c++0x or -std=gnu++0x

我不想启用 c++0x。我仍然希望能够使用聚合初始化样式。有什么办法吗?

最佳答案

braced-initializeruniform-initialization 方面的用法是 C++11 引入的功能。

如果您不想启用此类编译器支持,您很自然地被迫使用早期标准中的内容;正如您已经发现的那样,其中不包括 uniform-initialization .


下面是一个可能减轻您痛苦的简单“技巧”:

template<typename T, typename U>
iovec make_iovec (T const& a, U const& b) {
iovec ret = {a, b};
return ret;
}

iovecs.push_back (make_iovec (&foo, sizeof(foo)));

关于c++ - 如何将聚合初始化列表推送到 vector 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22481479/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com