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 に答える