2016-08-30 15 views
1

typedefステートメントでループ制御変数の型を知らせるように求められています。私が抱えている問題は、4要素の配列への参照へのtypedefの作成方法がわかっているか、可能であってもわからないということです。typedefを使用して配列への参照を作成する

/* 
Write a program to print the elements of ia. It should 
use a range for to manage the iteration. 
*/ 

int main() 
{ 

int ia[3][4] = { 
       {4,3,2,1}, 
       {1,2,3,4}, 
       {3,1,4,2} 
       }; 

for (int (&p)[4] : ia)  // This is the line I am talking about 
    for(int z : p) 
     cout << z; 

return 0; 
} 

私はまだ非常にプログラミングに新しいです、私はこの質問への答えを見つけることができないようです。あなたが提供できるtypedefの使用に関するアドバイス/助けをいただければ幸いです。

+0

を::あなたの人生を楽にしてくれるアレイ? –

+1

'auto&'だけ使うことはできませんか? – user2357112

+0

それは、自動を使用しないと言います – ShadowxEnd2

答えて

3

あなたはそれゆえ、あなたがタイプに与えたい、とあなたが前にtypedefスティック名前で変数名を置き換えることを除いてあなたは、あなたが変数宣言を書くのと同じ方法のtypedef書く:

typedef int (&R)[4]; 

Rが「の配列への参照」型であると宣言します。

+0

固定していただきありがとうございます。 – ShadowxEnd2

2

少なくともC++ 11を使用している場合は、range-for文が暗示しているので、 "typedef"の代わりに "using"を使用できます。これは、同じ用途の多くを提供し、それはあまり混乱構文があります:あなたは、宣言自体テンプレートができ使用して、さらに

// Equivalent declarations 
typedef int (&arrayRef)[4]; 
using arrayRef = int (&)[4]; 
// Usage 
for (arrayRef p : ia) { ... } 

を:なぜあなたは `のstdを使用していない

template<typename T, size_t n> 
using arrayRef = T (&)[n]; 

for (arrayRef<int,4> p : ia) { ... } 
関連する問題