tipo de mapa / mapa múltiple
- map <T1, T2, less> mapA; // El contenedor se organiza elementos en orden ascendente de claves. Si no se especifica ningún objeto de función, el objeto de menos función se usa por defecto.
- map <T1, T2, Greater> mapB; // El contenedor se organiza elementos en orden descendente de claves.
- cada vez menos se puede reemplazar con otros functores de objetos de función.
- Puede escribir un objeto de función personalizado para comparar tipos personalizados y utilizar el mismo método que el objeto de función utilizado en la construcción de conjuntos.
Copiar construcción y asignación de objeto de mapa
map(const map &mp); //拷贝构造函数
map& operator=(const map &mp); //重载等号操作符
map.swap(mp); //交换两个集合容器
Por ejemplo:
map<int, string> mapA;
mapA.insert(pair<int,string>(2, "李四"));
mapA.insert(pair<int,string>(1, "张三"));
mapA.insert(pair<int,string>(3, "王五"));
mapA.insert(pair<int,string>(4, "赵六"));
map<int ,string> mapB(mapA); //拷贝构造,此时mapB 和mapA中元素一致
map<int, string> mapC;
mapC = mapA; //赋值,此时mapC 和mapA中元素一致
mapC[3] = "老张"; //mapC中,此时包含 张三, 李四, 老张, 赵六
mapC.swap(mapA); //mapA 和mapC交换
tamaño del mapa
map.size(); //返回容器中元素的数目
map.empty();//判断容器是否为空
map<int, string> mapA;
mapA.insert(pair<int,string>(2, "李四"));
mapA.insert(pair<int,string>(1, "张三"));
mapA.insert(pair<int,string>(3, "王五"));
mapA.insert(pair<int,string>(4, "赵六"));
if (!mapA.empty())
{
int size = mapA.size(); //size 为 4
}
eliminación del mapa
1) map.clear (); // Eliminar todos los elementos
2) map.erase (pos); // Eliminar el elemento señalado por el iterador pos y devolver el iterador del siguiente elemento.
3) map.erase (beg, end); // Elimina todos los elementos en el intervalo [beg, end) y devuelve el iterador del siguiente elemento. (
¿Has aprendido matemáticas en la escuela secundaria!) 4) map.erase (key); // Elimina el par con la clave en el contenedor y devuelve el número de pares eliminados
5) Map.erase (key_type * first, key_type * last) // Eliminar
todos los grupos de equipos correspondientes a una clave específica en el rango medio cerrado y medio abierto especificado por la matriz
Ejemplos:
#include <iostream>
#include <functional>
#include <algorithm>
#include <map>
#include <string>
using namespace std;
int main()
{
map<int, string, greater<int>> mapStu;
mapStu.insert(pair<int, string>(2, "李四"));
mapStu.insert(pair<int, string>(1, "张三"));
mapStu.insert(pair<int, string>(3, "王五"));
mapStu.insert(pair<int, string>(4, "赵六"));
//返回值: 如果大于0, 返回的值为删除元素的个数, 小于0则失败.
map<int, string, greater<int>>::size_type ret = mapStu.erase(5);
cout<<"ret = "<<ret<<endl;
int range[] = {1, 2, 3, 4};
mapStu.erase(range+1, range+3); //删除数组指定的半闭半的区间中指定的key对应的所有队组
for(map<int, string, greater<int>>::iterator it = mapStu.begin(); it != mapStu.end(); it++)
{
cout<<"key: "<<(*it).first<<" value: "<<(*it).second<<endl;
}
system("pause");
return 0;
}
Entorno operativo: versión de aprendizaje vc ++ 2010
Resultados operativos: