2009-10-18 77 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