gpt4 book ai didi

c++ - 如何为通用 std::vector push_back 编写模板函数?

转载 作者:搜寻专家 更新时间:2023-10-31 00:55:04 29 4
gpt4 key购买 nike

我有两种或不同类型的 std::vector .

struct data{
int a;
int b;
int c;
};

std::vector<int> val1;
std::vector<data> val2;

现在我想编写一个适用于 val1 的模板函数和 val2 .

template<typename t>
void my_function(t s){
s.push_back(...); // based on s i.e it could be std::vector<int> or std::vector<data>
}

my_function<std::vector<int>>(val1);
my_function<std::vector<data>>(val2);

我面临的问题是,如果类型是 std::vector<int>,我该如何在代码中声明?推回s.push_back({1})与如果 std::vector<data>s.push_back({1,2,3});

最佳答案

忘记模板吧。简单的重载应该可以解决您的问题:

void my_function(const data& d) {
val2.push_back(d);
}

void my_function(int n) {
val1.push_back(n);
}

关于c++ - 如何为通用 std::vector push_back 编写模板函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43195860/

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