我目前正在關注 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 的函式,就像代碼的向量模板版本一樣。
這是可能的還是必須為特定長度的陣列模板定義一個函式?
此外,如果是這種情況,那么在向量上使用陣列的真正價值是什么?
謝謝
uj5u.com熱心網友回復:
您可以嘗試以下操作
template<std::size_t S>
void inputVector(std::array<int, S>& arr)
{
//do your thing
}
uj5u.com熱心網友回復:
如果我理解您的問題,您可以使用模板來允許不同長度的陣列,因此修改您的矢量版本看起來像
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);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/339092.html
下一篇:Php組物件陣列
