C++ 输出数组函数

Posted

技术标签:

【中文标题】C++ 输出数组函数【英文标题】:C++ Output array function 【发布时间】: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,就像代码的向量模板版本中的情况一样。

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

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

谢谢

【问题讨论】:

见:***.com/a/62201889/4342498 本书此时应该已经介绍了函数模板。 【参考方案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);

【讨论】:

以上是关于C++ 输出数组函数的主要内容,如果未能解决你的问题,请参考以下文章