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

Por favor, explique qué hace este código.¿Qué hace typedef en C++

+0

cuando quiero para escribirlo ¿qué significa "menos" y debe escribir? thankx –

+0

¿Puede darnos la definición de código de menos ? – Partial

+3

Al ver que no hay std :: before 'set',' less' entonces probablemente se refiere a 'std :: less'. Aunque podría ser un conjunto personalizado y menos, lo dudo. – GManNickG

Respuesta

28

Esto significa que cada vez que crea un SetInt, en realidad está creando un objeto de set<int, less<int> >.

Por ejemplo, hace que los siguientes dos piezas de código equivalente:

SetInt somevar; 

y

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

También se debe tener en cuenta que este es un sinónimo exacto, no un nuevo tipo que se introduce. Significa que cualquier especialización de plantillas para SetInt también se aplicará a set >. Por lo tanto, es solo una mano corta, que es útil para legibilidad o DRY por ejemplo. –

0

Se hace un alias para el tipo llamado SetInt, que es equivalente a set<int, less<int> >.

Sobre su pregunta acerca de less, que se refiere a std::less, el comparador que set utilizará para ordenar sus objetos.

3

Puede simplemente usar SetInt después del typedef como si estuviera usando set<int, less<int>>. Por supuesto, typedef es consciente del alcance.

+0

Aún necesita un espacio en '>>', aunque el estándar C++ 0x puede hacerlo innecesario en el futuro. –

4

De Wikipedia:

typedef es una palabra clave en los lenguajes de programación C y C++. Se usa para dar un nuevo nombre a un tipo de datos. La intención es facilitar que los programadores comprendan el código fuente.

En este caso particular, se hace SetInt un nombre de tipo, de manera que se puede declarar una variable como:

SetInt myInts; 
0

un typedef en C/C++ se utiliza para dar un cierto tipo de datos con otro nombre para que lo uses

En el fragmento de código, set<int, less<int> > es el tipo de datos que desea darle otro nombre (un alias si lo desea) a y ese nombre es SetInt

El propósito principal de utilizar un typedef es simplificar la comprensión de el código desde la perspectiva de un programador. En lugar de tener que usar siempre un tipo de datos largo y complicado (en su caso, supongo que es un objeto de plantilla), puede elegir un nombre bastante simple en su lugar.

0

El código significa que usted da un alias o nombre (setInt) al objeto

set<int, less<int>> 

... es decir. en lugar de llamar siempre el objeto como

set<int, less<int>> 

sólo puede dar setInt como el nombre y llamar al objeto .... al igual que

int i; 

por ejemplo:

SetInt setinteger; 
+0

Aún necesita un espacio en '>>', aunque el estándar C++ 0x puede hacerlo innecesario en el futuro. –