使用typedef创建对数组的引用

时间:2016-08-30 20:28:09

标签: c++ for-loop typedef

我被要求通过typedef语句来知道循环控制变量的类型。我遇到的问题是我不知道如何,或者甚至可能使typedef引用到4个元素的数组。

/*
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的任何建议/帮助,我们将不胜感激。

2 个答案:

答案 0 :(得分:3)

您编写一个typedef的方式与编写变量声明的方式相同,只是您使用要为该类型赋予的名称替换变量名称,并将typedef放在前面,因此:

typedef int (&R)[4];

会将R声明为类型&#34;对4 int s&#34;的数组的引用。

答案 1 :(得分:2)

如果您至少使用范围为for语句隐含的C ++ 11,则可以转到&#34;使用&#34;而不是&#34; typedef&#34;。它具有相同的用途和更多功能,并且语法较少混淆:

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

此外,通过使用,您可以模拟声明本身:

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

for (arrayRef<int,4> p : ia) { ... }