определить метод с вектором шаблонов в качестве аргумента - PullRequest
0 голосов
/ 19 ноября 2018

У меня есть метод в моем коде C ++ 11, который принимает шаблон в качестве аргумента

template<typename type> uint64_t insert(type item) {
    //code
    return id; 
 }

и я хочу создать аналог, чтобы вставить много предметов. Моя попытка состояла в том, чтобы передать эти элементы как вектор. Однако компиляция завершилась ошибкой " error: аргумент шаблона 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 голосов
/ 19 ноября 2018

Предполагая, что 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...