c++输出数组函数



我目前正在学习Deitel的c++编程第9版教材,并且在一个特定的问题上遇到了困难。

问题是采用本章前面使用vector类模板编写的代码,并使用数组类模板重写。

在代码中,有以下函数用于向vector中输入数据和显示vector:

// 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的情况下,在向量模板版本的代码。

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

进一步说,如果是这种情况,那么在vector对象上使用数组的真正价值是什么?

感谢

您可以尝试以下操作

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

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

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

最新更新