我的C ++ 11代码中有一个方法可以接受模板作为参数
template<typename type> uint64_t insert(type item) {
//code
return id;
}
,我想创建一个类似的东西以插入许多项目。我的尝试是将这些项目作为媒介传递。但是,编译失败,并显示错误“ 错误:模板参数1无效”
template<typename type> std::vector<uint64_t> insert_many(std::vector<type insta> items) {
std::vector<uint64_t> v;
//v.push_back(...)
//code
return v;
}
上述方法签名有什么问题?
答案 0 :(得分:2)
假设type
是存储在向量中的对象的类型。
#include <iostream>
#include <vector>
template<typename type>
typename std::vector<type>::iterator insert(std::vector<type>& v, const std::vector<type>& add) {
return v.insert(v.end(), add.begin(), add.end());
}
int main() {
std::vector<int> a{0,1,2,3,4};
std::vector<int> b{5,6};
insert(a, b);
for(const auto val : a) {
std::cout << val << "\n";
}
}
输出
0
1
2
3
4
5
6