Contenedores
Para ver el artículo en inglés, active la casilla Inglés. También puede ver el texto en inglés en una ventana emergente si pasa el puntero del mouse por el texto.
Traducción
Inglés

Contenedores (C++ moderno)

 

De forma predeterminada, utilice vector como contenedor secuencial predeterminado en C++.  Es el equivalente de List<T> en otros lenguajes.  

vector<string> v;
v.push_back( "Geddy Lee" );

Utilice map (no unordered_map) como contenedor asociativo predeterminado.  Utilice set, multimap, multiset para casos degenerados y múltiples.  

map<string, string> phone_book;
// ...
phone_book["Alex Lifeson"] = "+1 (416) 555-1212";

Cuando la optimización del rendimiento es necesaria, considere utilizar:

  1. el tipo de matriz cuando la incrustación es importante (por ejemplo, como miembro de clase).

  2. contenedores asociativos desordenados (unordered_map, etc.): menor sobrecarga por elemento (principal) y búsqueda de tiempo constante (potencialmente mayor, a veces menor).  Es más difícil de utilizar de forma correcta y eficaz, debido a los inconvenientes y a la nitidez de los bordes.  

  3. vector ordenado. (Vea: Algoritmos).

No use matrices de C. (Para obtener las API más antiguas, utilice f( vec.data(), vec.size() );).

Para consultar otro artículo acerca de contenedores, vea Contenedores de STL.

En las tablas siguientes se muestran los tamaños del contenedor, en bytes, para las plataformas x86 y x64. (Para estos fines, ARM de 32 bits equivale a x86). En estas tablas se cubre el modo de lanzamiento porque el modo de depuración contiene la comprobación de la maquinaria, que utiliza espacio y tiempo. Las columnas independientes son para Visual C++ 2008 SP1, donde _SECURE_SCL se estableció en 1 como valor predeterminado y para Visual C++ 2008 SP1 con _SECURE_SCL establecido manualmente en 0 para lograr la velocidad máxima. Visual C++ en Visual Studio 2010, Visual C++ en Visual Studio 2012 y Visual C++ en Visual Studio 2013 cambian _SECURE_SCL a 0 de forma predeterminada (ahora conocido como _ITERATOR_DEBUG_LEVEL).

Tamaños del contenedor x86 (bytes)

VC9 SP1

VC9 SP1

SCL=0

VC10

VC11

vector<int>

24

16

16

12

array<int, 5>

20

20

20

20

deque<int>

32

32

24

20

forward_list<int>

N/D

N/D

8

4

list<int>

28

12

12

8

priority_queue<int>

28

20

20

16

queue<int>

32

32

24

20

stack<int>

32

32

24

20

pair<int, int>

8

8

8

8

tuple<int, int, int>

16

16

16

12

map<int, int>

32

12

16

8

multimap<int, int>

32

12

16

8

set<int>

32

12

16

8

multiset<int>

32

12

16

8

hash_map<int, int>

72

44

44

32

hash_multimap<int, int>

72

44

44

32

hash_set<int>

72

44

44

32

hash_multiset<int>

72

44

44

32

unordered_map<int, int>

72

44

44

32

unordered_multimap<int, int>

72

44

44

32

unordered_set<int>

72

44

44

32

unordered_multiset<int>

72

44

44

32

string

28

28

28

24

wstring

28

28

28

24

Tamaños del contenedor x64 (bytes)

VC9 SP1

VC9 SP1

SCL=0

VC10

VC11

vector<int>

48

32

32

24

array<int, 5>

20

20

20

20

deque<int>

64

64

48

40

forward_list<int>

N/D

N/D

16

8

list<int>

56

24

24

16

priority_queue<int>

56

40

40

32

queue<int>

64

64

48

40

stack<int>

64

64

48

40

pair<int, int>

8

8

8

8

tuple<int, int, int>

16

16

16

12

map<int, int>

64

24

32

16

multimap<int, int>

64

24

32

16

set<int>

64

24

32

16

multiset<int>

64

24

32

16

hash_map<int, int>

144

88

88

64

hash_multimap<int, int>

144

88

88

64

hash_set<int>

144

88

88

64

hash_multiset<int>

144

88

88

64

unordered_map<int, int>

144

88

88

64

unordered_multimap<int, int>

144

88

88

64

unordered_set<int>

144

88

88

64

unordered_multiset<int>

144

88

88

64

string

40

40

40

32

wstring

40

40

40

32

Mostrar:
© 2016 Microsoft