我被要求通过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的任何建议/帮助,我们将不胜感激。
答案 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) { ... }