mapa en c++stl

En programación C++, map es una plantilla de clase contenedora que se utiliza para almacenar datos en forma de pares clave-valor. Su esencia es un contenedor asociativo que busca y accede a valores a través de claves.

Los pares clave-valor en el mapa se ordenan automáticamente según la clave, el valor se puede encontrar según el nombre de la clave y todos los pares clave-valor son compatibles. Al buscar elementos, el mapa utiliza una estructura de datos de árbol rojo-negro (árbol RB) para implementarlo, por lo que la eficiencia de la búsqueda es bastante alta.

Cuando utilice map en C++, debe introducir el archivo de encabezado <map>, en el que los tipos de clave y valor se pueden especificar arbitrariamente. Los tipos de pares clave-valor comunes incluyen string-int, int-double, etc.

A continuación se muestra un ejemplo del uso de un mapa para almacenar cadenas y números enteros:

#include <iostream>
#include <map>
using namespace std;

int main() {
    map<string, int> m;
    m["apple"] = 1;
    m["orange"] = 2;
    m["banana"] = 3;

    cout << "m contains:" << endl;
    for (auto it = m.begin(); it != m.end(); it++) {
        cout << it->first << ": " << it->second << endl;
    }

    return 0;
}

En este programa, definimos un objeto m de tipo de mapa e insertamos tres pares clave-valor en este mapa. Luego iteramos a través de este mapa y generamos los pares clave-valor. El resultado de salida es:

```
m contiene:
manzana: 1
plátano: 3
naranja: 2
```

Como puede ver, las claves en el resultado de salida están ordenadas alfabéticamente y los valores corresponden a los nombres de las claves. cara a cara. Esta es una de las características del contenedor de mapas.

Entonces, ¿cómo utilizar el mapa específicamente?

Al utilizar el mapa, debe prestar atención a los siguientes puntos:

1. Los pares clave-valor en el mapa se ordenan automáticamente según la clave, por lo que el tipo de clave debe admitir el operador de comparación menor que, o el usuario debe proporcionar una función de comparación (o functor) del tipo de clave a ordenar.
2. Las claves en el mapa deben ser únicas. Si desea almacenar claves duplicadas, debe utilizar un contenedor de mapas múltiples.
3. El iterador del mapa es un iterador bidireccional que admite el movimiento hacia adelante y hacia atrás, pero no admite el acceso aleatorio.
4. Utilice el operador de subíndice [] para insertar, acceder y modificar elementos fácilmente. Si el elemento no existe, se insertará automáticamente un nuevo elemento con la clave como subíndice y el valor se inicializará al valor predeterminado del tipo de elemento.

#include <iostream>
#include <map>
using namespace std;

int main() {
    map<string, int> m;

    // 插入元素
    m.insert(make_pair("apple", 10));
    m.insert(make_pair("orange", 20));
    m["banana"] = 30;

    // 查找元素
    if (m.find("apple") != m.end()) {
        cout << "apple: " << m["apple"] << endl;
    } else {
        cout << "apple not found" << endl;
    }

    // 遍历元素
    cout << "m contains:" << endl;
    for (auto it = m.begin(); it != m.end(); it++) {
        cout << it->first << ": " << it->second << endl;
    }

    // 修改元素
    m["apple"] = 50;

    // 删除元素
    m.erase("orange");

    return 0;
}

En este programa, definimos un objeto de tipo mapa m e insertamos tres pares clave-valor en él. Luego podemos usar la función de búsqueda para averiguar si existe una clave o usar el operador de subíndice [] para acceder a un valor. Luego recorremos el mapa y generamos los pares clave-valor. Luego podemos modificar el valor correspondiente a una clave mediante el operador de subíndice []. Finalmente, usamos la función de borrado para eliminar el par clave-valor especificado.

El resultado de salida es:

```
manzana: 10
m contiene:
manzana: 10
plátano: 30
naranja: 20
```
 

Supongo que te gusta

Origin blog.csdn.net/m0_74153798/article/details/131837771
Recomendado
Clasificación