你能创建一个可以接受C ++中的向量和数组的模板吗?

时间:2013-03-18 12:48:22

标签: c++ arrays templates vector

我知道你可以创建模板来使函数接受int,double,float。但是你可以“模板化”一个函数,以便它可以接受数组和向量吗?

1 个答案:

答案 0 :(得分:3)

通常的答案是编写一个模板函数,它将一对迭代器作为参数。因为指针也是迭代器,所以你可以使用指向第一个指针的指针调用函数,并使用指向数组末尾元素的指针调用函数。

E.g。

template <class II>
void print_all(II first, II last)
{
  for (II i = first; i != last; ++i)
    cout << *i << ' ';
  cout << '\n';
}

vector<int> v;
int a[10];
...
print_all(v.begin(), v.end());
print_all(a, a + 10);