gpt4 book ai didi

c++ - 我可以使用 tie 将一对元素放入 vector 中吗?

转载 作者:太空狗 更新时间:2023-10-29 20:49:56 24 4
gpt4 key购买 nike

假设我有这样一个函数:pair<int, int> func()和一个 vector<int> vec .我想这样做:

vec.resize(size(vec) + 2U);

tie(*next(rbegin(vec)), *rbegin(vec)) = func();

我只是觉得这是一种非常复杂的方式来编写我正在做的事情。有没有办法在没有 resize 的情况下完成此操作?打电话什么的?

最佳答案

具有结构化绑定(bind)的简单 C++17 解决方案:

std::pair<int, int> func();

int main()
{
std::vector<int> vec;
vec.reserve(2);

const auto [a, b] = func();
vec.push_back(a);
vec.push_back(b);
}

live example on godbolt.org


C++17包扩展方案:

const auto vec = std::apply([](auto... xs)
{
return std::vector{xs...};
}, func());

live example on godbolt.org


C++17 包扩展解决方案(在现有 vector 中):

std::vector<int> vec;
std::apply([&vec](auto... xs)
{
(vec.push_back(xs), ...);
}, func());

关于c++ - 我可以使用 tie 将一对元素放入 vector 中吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56992623/

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