他の答えは別として、整数の配列を渡そうとしているだけなら、そうではありません:
void func(const std::vector<int>& p)
{
// ...
}
std::vector<int> params;
params.push_back(1);
params.push_back(2);
params.push_back(3);
func(params);
ただし、パラメーター、フォームで呼び出すことはできません。回答にリストされている可変長関数のいずれかを使用する必要があります。C++0x は可変個引数テンプレートを許可するため、タイプ セーフになりますが、現時点では基本的にメモリとキャストです。
ある種の可変パラメータ -> ベクトルをエミュレートできます。
// would also want to allow specifying the allocator, for completeness
template <typename T>
std::vector<T> gen_vec(void)
{
std::vector<T> result(0);
return result;
}
template <typename T>
std::vector<T> gen_vec(T a1)
{
std::vector<T> result(1);
result.push_back(a1);
return result;
}
template <typename T>
std::vector<T> gen_vec(T a1, T a2)
{
std::vector<T> result(1);
result.push_back(a1);
result.push_back(a2);
return result;
}
template <typename T>
std::vector<T> gen_vec(T a1, T a2, T a3)
{
std::vector<T> result(1);
result.push_back(a1);
result.push_back(a2);
result.push_back(a3);
return result;
}
// and so on, boost stops at nine by default for their variadic templates
使用法:
func(gen_vec(1,2,3));