1

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

このプログラムで印刷したい 2 つの 2d ベクトルがあり、この関数の呼び出しを使用して、1 つが double でいっぱいで、もう 1 つが int の両方を印刷したいと考えています。これは可能ですか、それとも int は double に自動変換されますか??

ありがとう

4

1 に答える 1

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);
于 2013-09-21T21:54:57.603 に答える