【问题标题】:C++ Output array functionC++ 输出数组函数
【发布时间】:2021-12-12 19:05:19
【问题描述】:

我目前正在关注 Deitel 的 C++ How to Program 第 9 版教科书,但遇到了一个特定问题。

问题是把本章前面写的代码用向量类模板改写成数组类模板。

在代码中有以下函数用于向向量中输入数据并显示向量。

// output vector contents
void outputVector( const vector< int > &array )
{
    for ( int item : array )
        cout << item << " ";

    cout << endl;
} // end function outputVector

// input vector contents
void inputVector( vector< int > &array )
{
    for ( int &item : array )
        cin >> item;
} // end function inputVector

我的困惑是我不知道如何创建这样的函数,这些函数将数组模板作为参数,例如长度为 7 和 10,就像代码的向量模板版本中的情况一样。

这是可能的还是必须为特定长度的数组模板定义一个函数?

此外,如果是这种情况,那么在向量上使用数组的真正价值是什么?

谢谢

【问题讨论】:

标签: c++ arrays c++11 vector


【解决方案1】:

你可以试试下面的

template<std::size_t S>
void inputVector(std::array<int, S>& arr)
{
    //do your thing
}

【讨论】:

    【解决方案2】:

    如果我理解你的问题,你可以使用模板来允许不同长度的数组,所以修改你的矢量版本看起来像

    template <std::size_t N>
    void outputArray(const std::array<int, N>& data)
    {
        for (int item : data)
            std::cout << item << " ";
    
        std::cout << std::endl;
    }
    
    template <std::size_t N>
    void inputArray(std::array<int, N>& data)
    {
        for (int &item : data)
            std::cin >> item;
    }
    

    然后你可以用任何大小的数组调用它

    int main()
    {
        std::array<int, 3> a = {1,2,3};
        std::array<int, 5> b = {1,2,3,4,5};
    
        outputArray(a);
        outputArray(b);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-22
      • 1970-01-01
      • 1970-01-01
      • 2011-11-18
      • 1970-01-01
      • 2020-08-09
      • 1970-01-01
      相关资源
      最近更新 更多