使用C ++复制,打印和输入数组

时间:2014-10-30 19:14:53

标签: c++

对于类赋值,我需要创建4个函数来在程序中进行测试。我必须使用copyArray函数,PrintArray函数和InputArray函数。我最麻烦的问题是copyArray部分。我已经完成了我自己的大部分代码,但我需要知道我是否接近解决方案或者根本不关闭。代码,我确定,是一团糟。如果有人能帮助我找到完成这个目标的正确方向,我将非常感激。

#include <iostream> using std::cin; using std::cout; using std::endl; using std::istream; using std::ostream; void inputArray(istream &, int[], int*); void printArray(ostream &, const int[], int); float a[4] = { 0, 1, 2, 3 }; float b[4]; void copyArray(const int orig[], int dup[], int); void main() { int a[4] = { 7, 14, 9, 10 }; int b[4]; cout << "The input data : " << endl; inputArray(cin, a, b); cout << "The printArray data : " << endl; printArray(cout, b, 4); } //---------------------------------------------------------------------------- void inputArray(istream & in, int t[], int howMany) { for (int i = 0; i < howMany; i++) in >> t[i]; return; } //----------------------------------------------------------------------------- void printArray(ostream & out, const int r[], int cnt) { for (int i = 0; i< cnt; i++) out << r[i] << endl; return; } void copyArray(const int orig [], int dup [], int); for (int i = 0; i < 4; i++){ b[i] = a[i]; } }

1 个答案:

答案 0 :(得分:0)

当然最好将函数copyArray定义为模板函数。例如

template <typename T, size_t N>
void copyArray( T ( &dst )[N], const T ( &src )[N] )
{
    for ( size_t i = 0; i < N; i++ ) dst[i] = src[i];
}

至于你的函数声明,那么它的定义可能看起来像

void copyArray( int dst[], const int src[], size_t n )

    for ( size_t i = 0; i < n; i++ ) dst[i] = src[i];
}

在你所显示的函数定义中,你必须在右括号后删除分号,并使用函数参数而不是全局变量。

考虑到标题std::copystd::copy_nstd::copy_ifstd::copy_backward在标题<algorithm>中声明可用于处理数组的算法。