Oprócz innych odpowiedzi, jeśli jesteś po prostu staramy się przekazać tablicę liczb całkowitych, to dlaczego nie:
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);
nie można nazwać go w parametrze, forma, choć. Musiałbyś użyć dowolnej z funkcji variadycznych wymienionych w twoich odpowiedziach. C++ 0x zezwoli na szablony variadyczne, które spowodują, że będzie to bezpieczny typ, ale na razie jest to w zasadzie pamięć i przesyłanie.
Można emulować jakieś zmiennej liczbie argumentów parameter-> wektor rzecz:
// 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
Zastosowanie:
func(gen_vec(1,2,3));
Jak inni podkreślili, funkcja variadic jest dokładnie tym, czego szukasz. Ale jeśli nie masz zamiaru wysyłać kombinacji typów do funkcji, lepiej jest po prostu przekazać wskaźnik lub odwołanie do wektora zawierającego parametry. –