c ++ как сделать аргумент функции (подпрограммы) вектором типа double или вектором типа int

Эй, мне просто интересно, возможно ли в c ++ иметь функцию в моей программе, которая в качестве входных данных принимает вектор или вектор. Вот пример того, что я хочу:

void PrintValues(const std::string& title, std::vector<std::vector<double>>& v)
{
std::cout << title << std::endl;
for(size_t line = 0; line < v.size(); ++line)
{
for(size_t val = 0; val < v[line].size(); ++val)
{
std::cout << v[line][val] << " ";
}
std::cout << std::endl;
}
std::cout << std::endl;
}

У меня есть два двухмерных вектора, которые я хочу напечатать в этой программе, и я хочу использовать вызов этой функции, чтобы напечатать как один заполнен двойными, так и другие целые числа. Возможно ли это или мои конверты будут автоматически конвертированы в двойные?

Спасибо

1

Решение

Сделайте вашу функцию шаблоном

template <typename T>
void PrintValues(const std::string& title, std::vector<std::vector<T> >& v)
{
std::cout << title << std::endl;
for(size_t line = 0; line < v.size(); ++line)
{
for(size_t val = 0; val < v[line].size(); ++val)
{
std::cout << v[line][val] << " ";
}
std::cout << std::endl;
}
std::cout << std::endl;
}

И использование:

std::vector<std::vector<int> > x;
std::vector<std::vector<double> > y;
PrintValues("Int",x);
PrintValues("Doubles",y);
4

Другие решения

Других решений пока нет …