2009-10-18 98 views
7
typedef set<int, less<int> > SetInt; 

请解释此代码的作用。typedef在C++中做什么

+0

时,我想键入它 “少”是什么意思,它是必须写? thankx – 2009-10-18 17:58:58

+0

你能给我们的代码定义更少? – Partial 2009-10-18 18:07:06

+3

看到'set'之前没有std ::,'less'则可能指的是'std :: less'。虽然它可以自定义设置和更少,我怀疑它。 – GManNickG 2009-10-18 18:12:04

回答

28

这意味着无论何时创建SetInt,实际上都会创建一个对象set<int, less<int> >

例如,它使得代码当量的以下两个部分:

SetInt somevar; 

set<int, less<int> > somevar; 
+1

还应该注意,这是一个确切的同义词,而不是引入的新类型。这意味着SetInt的任何模板专业化也将适用于设置>。因此,这只是一个简短的手段,例如,这对于可读性或DRY很有用。 – 2009-10-19 15:36:34

0

它使一个别名称为SetInt的类型,这相当于set<int, less<int> >

关于您的问题,请参阅std::lessset将用于对您的对象进行排序的比较器。

3

您可以在typedef之后使用SetInt,就好像您在使用set<int, less<int>>一样。当然,typedef是有意义的。

+0

尽管C++ 0x标准将来可能不需要,但在'>>'中仍然需要一个空格。 – 2009-10-19 06:17:46

4

Wikipedia

typedef是在C和C++编程语言的关键字。它用于给数据类型一个新名称。目的是让程序员更容易理解源代码。

在此特定情况下,它使SetInt类型名称,这样你可以声明一个变量:

SetInt myInts; 
0

在C/C++甲的typedef是用来给一个特定的数据类型的另一个名称供你使用。

在您的代码段,set<int, less<int> >的数据类型是你想给另一个名字(如果你愿意的化名)这个名字是SetInt

使用一个typedef的主要目的是简化的理解从程序员的角度来看代码。而不必总是使用复杂和长的数据类型(在你的情况下,我认为它是一个模板对象),你可以选择一个相当简单的名字。

0

的代码意味着,你给一个别名或名称(SETINT)到

set<int, less<int>> 

对象...即。而不是总是调用对象

set<int, less<int>> 

,您可以把SETINT作为名称,并调用该对象....就像

int i; 

如:

SetInt setinteger; 
+0

尽管C++ 0x标准可能在将来不需要,但在'>>'中仍然需要一个空格。 – 2009-10-19 06:18:23