gpt4 book ai didi

c++ - 如何为此制作模板功能?

转载 作者:行者123 更新时间:2023-11-30 04:29:56 29 4
gpt4 key购买 nike

我有两个非常相似的函数,我想用它们制作一个模板函数。

void func1(vector<vector<vector<struct1_type> > > &struct1_x, const int &x,
const int &y, struct2_type &struct2_y, list1<struct1_type> &l1)

void func2(vector<vector<vector<struct1_type> > > &struct1_x, const int &x,
const int &y, struct2_type &struct2_y, list2<struct1_type> &l2)

函数做同样的事情......唯一不同的是最后一个参数,这是两个不同的类来处理列表。

我已经尝试了很多事情,但都没有结果,而且出现了大量错误。感谢您可以为相对新手提供的任何帮助!

最佳答案

这就是template template s 的发明目的。

template <template <typename> class list_type> 
void func1(vector<vector<vector<struct1_type> > > &struct1_x,
const int &x,
const int &y,
struct2_type &struct2_y,
list_type<struct1_type> &q1);

但请注意,模板必须完全匹配。例如,您不能使用 std::list对于 list_type参数,因为它不接受一个模板参数——它接受两个:包含的类型和分配器类型。

使用直截了当的非 template template 可能更简单解决方案。

template <typename list_type> 
void func1(vector<vector<vector<struct1_type> > > &struct1_x,
const int &x,
const int &y,
struct2_type &struct2_y,
list_type &q1);

并期望用户指定 list1<struct1_type>作为模板参数。这就是 std::stack , std::queue std::priority_queue 做。

关于c++ - 如何为此制作模板功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9025652/

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