0

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

4

1 回答 1

3

通常的答案是编写一个将一对迭代器作为参数的模板函数。因为指针也是迭代器,所以您可以使用指向数组的第一个元素和一个结束元素的指针来调用您的函数。

例如

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);
于 2013-03-18T12:52:00.737 回答