c ++如何使函数(子例程)参数成为双精度矢量或整数矢量

时间:2013-09-21 21:51:18

标签: c++ vector arguments 2d-vector

嘿,我只是想知道在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;
}

我想要在这个程序中打印两个2d矢量,我想使用这个函数调用打印一个是双打和其他整数。这是可能的还是我的整数会自动转换为双打?

由于

1 个答案:

答案 0 :(得分:4)

使您的功能成为模板

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);