Как передать std :: array в качестве параметра шаблона с различным количеством элементов в C ++? - PullRequest
0 голосов
/ 30 июня 2019

Я пытаюсь создать шаблонную функцию, которая позволяет мне использовать объект std :: array в качестве параметра с различным количеством элементов.

Например:

#include <array>

template <class T>
void func(std::array<T,/*varying#ofelems*/> ary){...}

Ответы [ 3 ]

5 голосов
/ 30 июня 2019

Вы просто указываете количество элементов внутри параметров шаблона.

template<class T, size_t N>
void func(std::array<T, N> arr) {

}
0 голосов
/ 30 июня 2019

В большинстве случаев я бы рекомендовал следовать стандартным алгоритмам и вместо этого использовать два шаблонных итератора для начала и конца.

template <class InputIt>
void func(InputIt begin, InputIt end) {
    ...
}
0 голосов
/ 30 июня 2019

Лучший способ не быть строгим:

template <class T>
void func(const T& ary)
{
    ....
}

Таким образом, вы покроете не только std::array, но также std::vector или другие контейнеры.

...