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);
Другие вопросы по тегам