gpt4 book ai didi

c++ - 如何从元组 C++ 中过滤重复类型

转载 作者:太空狗 更新时间:2023-10-29 23:10:29 28 4
gpt4 key购买 nike

如何过滤元组中的重复类型?

例如:

using Tuple = std::tuple<int, double, int, double, std::string, std::string>
using FilteredTuple = without_duplicates<Tuple>;

其中 without_duplicates 的实现方式是生成以下 FilteredTuple 类型:

std::tuple<int, double, std::string>

最佳答案

#include <type_traits>
#include <tuple>

template <typename T, typename... Ts>
struct unique : std::type_identity<T> {};

template <typename... Ts, typename U, typename... Us>
struct unique<std::tuple<Ts...>, U, Us...>
: std::conditional_t<(std::is_same_v<U, Ts> || ...)
, unique<std::tuple<Ts...>, Us...>
, unique<std::tuple<Ts..., U>, Us...>> {};

template <typename... Ts>
using unique_tuple = typename unique<std::tuple<>, Ts...>::type;

DEMO

关于c++ - 如何从元组 C++ 中过滤重复类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57527703/

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