定义一个以模板向量为参数的方法

时间:2018-11-19 11:54:43

标签: c++ c++11

我的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; 
}

上述方法签名有什么问题?

1 个答案:

答案 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