gpt4 book ai didi

c++ - 使用参数 vector 调用函数

转载 作者:行者123 更新时间:2023-11-30 02:16:06 25 4
gpt4 key购买 nike

我有一个 std::vector 参数,我想用它们调用一个函数。有什么办法吗?

特别是函数是 mysqlx select函数和参数是我要查询的列;它们都是 std::string 类型。该函数的目的是减少代码库中的重复。

(这似乎是一个普遍有用的话题,但我无法通过搜索找到答案。如果我错过了它并且已经回答了这个问题,请指出问题并将其作为重复关闭,谢谢。)

最佳答案

你可以做到这一点,直到编译时参数的最大数量。它不漂亮。

using result_type = // whatever
using arg_type = // whatever
using args_type = const std::vector<arg_type> &;
using function_type = std::function<result_type(args_type)>;

template <size_t... Is>
result_type apply_vector_static(args_type args, std::index_sequence<Is...>)
{
return select(args[Is]...);
}

template<size_t N>
result_type call_apply_vector(args_type args)
{
return apply_vector_static(args, std::make_index_sequence<N>());
}

template <size_t... Is>
std::map<size_t, function_type> make_funcs(std::index_sequence<Is...>)
{
return { { Is, call_apply_vector<Is> }... };
}

result_type apply_vector(args_type args)
{
// Some maximum limit
static const auto limit = std::make_index_sequence<50>();
static const auto funcs = make_funcs(limit);
return funcs.at(args.size())(args);
}

See it live

关于c++ - 使用参数 vector 调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55381537/

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