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++ 输出数组函数的主要内容,如果未能解决你的问题,请参考以下文章

C++ 邻接数组 实现四种图类

C++ 输入一组数组 找出这个数组中第2大的数 这个函数 怎么写

在 C++ 中用于在函数中使用数组,其中使用 ifstream 将数据从 .txt 文件输入到数组中

如何从 OpenCV C++ 中的 HoughLines 函数输出中绘制所需的线?

在 matlab 到 C++ 的转换中未正确设置二维数组

使用 c++ Eigen 库处理 numpy 数组后,输出错误