gpt4 book ai didi

C++ 从 std::vector> 获取 std::vector

转载 作者:行者123 更新时间:2023-12-05 09:30:08 25 4
gpt4 key购买 nike

我想初始化一个 const std::vector<int>给定 std::vector<std::tuple<int, float>> 的构造函数初始化列表中的成员变量构造函数参数。该 vector 应包含所有第一个元组项。

是否有单行代码可以提取 std::vector<int>包含来自 std::vector<std::tuple<int, float>> 的所有第一个元组条目?

最佳答案

使用 C++20 范围:

struct X
{
const std::vector<int> v;

template <std::ranges::range R>
requires std::convertible_to<std::ranges::range_value_t<R>, int>
X(R r)
: v{r.begin(), r.end()}
{}

X(const std::vector<std::tuple<int, float>>& vt)
: X{vt | std::ranges::views::elements<0>}
{}
};

使用范围-v3:

struct X
{
const std::vector<int> v;

X(const std::vector<std::tuple<int, float>>& vt)
: v{vt | ranges::views::transform([] (auto t) {
return std::get<0>(t); })
| ranges::to<std::vector>()}
{}
};

还有科学怪人的怪物:

#include <ranges>
#include <range/v3/range/conversion.hpp>

struct X
{
const std::vector<int> v;

X(const std::vector<std::tuple<int, float>>& vt)
: v{vt | std::ranges::views::elements<0>
| ranges::to<std::vector>()}
{}
};

关于C++ 从 std::vector<std::tuple<int, float>> 获取 std::vector<int>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69816375/

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