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

Veuillez expliquer ce que fait ce code.Que fait typedef en C++?

+0

quand je veux pour taper ce que "moins" signifie en elle et est-ce qu'il faut écrire ??? thankx –

+0

Pouvez-vous nous donner la définition de code de moins ? – Partial

+3

Vu qu'il n'y a pas de std :: before 'set',' less' fait alors probablement référence à 'std :: less'. Bien qu'il pourrait un ensemble personnalisé et moins, j'en doute. – GManNickG

Répondre

28

Cela signifie que lorsque vous créez un SetInt, vous créez en fait un objet de set<int, less<int> >.

Par exemple, il fait les deux pièces d'équivalent de code suivant:

SetInt somevar; 

et

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

Il convient également de noter qu'il s'agit d'un synonyme exact et non d'un nouveau type introduit. Cela signifie que toute spécialisation de templates pour SetInt s'appliquera aussi à set >. Par conséquent, c'est juste une petite main, ce qui est utile pour la lisibilité ou DRY par exemple. –

0

Il fait un alias du type appelé SetInt, ce qui équivaut à set<int, less<int> >.

A propos de votre question sur moins, cela fait référence à std::less, le comparateur set va utiliser pour trier vos objets.

3

Vous pouvez simplement utiliser SetInt après le typedef comme si vous utilisez set<int, less<int>>. Bien sûr, typedef est conscient de la portée.

+0

Vous avez toujours besoin d'un espace dans '>>', bien que le standard C++ 0x puisse rendre cela inutile dans le futur. –

4

De Wikipedia:

typedef est un mot-clé dans les langages de programmation C et C++. Il est utilisé pour donner un nouveau nom à un type de données. L'intention est de faciliter la compréhension du code source par les programmeurs. Dans ce cas particulier

, il fait SetInt un nom de type, de sorte que vous pouvez déclarer une variable:

SetInt myInts; 
0

A typedef en C/C++ est utilisé pour donner un certain type de données un autre nom pour vous d'utiliser.

Dans l'extrait de code, set<int, less<int> > est le type de données que vous voulez donner un autre nom (un alias si vous le souhaitez) à et ce nom est SetInt

Le but principal d'utiliser un typedef est de simplifier la compréhension des le code du point de vue d'un programmeur. Au lieu de devoir toujours utiliser un type de données compliqué et long (dans votre cas je suppose qu'il s'agit d'un objet modèle), vous pouvez choisir un nom plutôt simple à la place.

0

Le code signifie que vous donnez un alias ou le nom (SETINT) au

set<int, less<int>> 
objet

... i.e.. au lieu d'appeler toujours l'objet comme

set<int, less<int>> 

vous pouvez simplement donner SETINT que le nom et appeler l'objet .... tout comme

int i; 

par exemple:

SetInt setinteger; 
+0

Vous avez toujours besoin d'un espace dans '>>', bien que le standard C++ 0x puisse rendre cela inutile dans le futur. –