Tabla de contenido
4. P384 Detectar el valor de retorno de inserción (contenedor asociado)
5. P386 Borrar elemento (contenedor asociado)
Seis Operación de subíndice del mapa P387
Uno. P343 único
La función unqiue "eliminará" los duplicados de elementos adyacentes al contenedor.
vector<int> v = { 1, 2, 3, 3, 3, 4, 4, 5 };
unique(v.begin(), v.end());
for (auto n : v) cout << n << " ";
//结果:
1 2 3 4 5 4 4 5
Aquí hay algunos puntos a tener en cuenta:
1. Solo se eliminarán los duplicados de elementos adyacentes en el contenedor. Asegúrese de que los mismos elementos estén adyacentes antes de usarlos.
Si se almacena internamente así: 1, 2, 2, 3, 2, 4, 3, 5
Entonces el resultado será: 1, 2, 3, 2, 4, 3, 5, 5
2. El rango de parámetros está cerrado a la izquierda y abierto a la derecha, y el parámetro derecho es el último parámetro que participa en único.
3. El valor devuelto es la siguiente posición del último elemento que no se repite .
vector<int> v = { 1, 2, 3, 3, 3, 4, 4, 5 };
//unique之后:1 2 3 4 5 4 4 5
//返回: ^
vector<int> v = { 1, 2, 2, 3, 2, 4, 3, 5 };
//unique之后:1 2 3 2 4 3 5 5
//返回: ^
2. iterador de inserción P358
Este es un adaptador de contenedor que toma un contenedor como argumento y devuelve un iterador.
Hay tres tipos:
tipo | significado | usar |
---|---|---|
volver_insertar(v) | Equivalente a v.push_back | auto i = back_inserter(v); i = valor; // == v.push_back(valor); |
insertador_frontal(v) | Equivalente a v.push_front | auto i = insertador_frontal(v); i = valor; // == v.push_front(valor); |
insertar (v, p) | Equivalente a v.insert, insertando elementos antes del iterador p | auto i = insertador(v, v.fin()); i = valor; // == v.insertar(v.fin(), val); |
3. Iterador iostream P359
istream_iterador:
istream_iterator<int> it(cin), end;
vector<int> v(it, end);//将键盘数据写入数组
La operación iterador ++ se llama en el constructor de vectores Para el iterador istream, la operación ++ es sinónimo de in >> .
Los iteradores istream vacíos tienen como valor predeterminado los iteradores posteriores al final .
ostream_iterador:
ostream_iterator<int> it(cout, " ");
vector<int> v = { 1, 2, 3, 4, 5, 6 };
for (auto n : v)
(*it)++ = n;//将vector输出到显示器
Hay dos construcciones para los iteradores ostream:
ostream_iterator<T> fuera(os) | out escribe datos de tipo T en el sistema operativo |
ostream_iterator<T> fuera(os, d) | out escribe datos de tipo T en el sistema operativo y genera una cadena d después de cada escritura |
Para los iteradores ostream, la operación = es sinónimo de out << .
Además, se pueden omitir las operaciones de desreferenciación * y ++ .
ostream_iterator<int> it(cout, " ");
vector<int> v = { 1, 2, 3, 4, 5, 6 };
for (auto n : v)
it = n;
4. P384 Detectar el valor de retorno de inserción (contenedor asociado)
La inserción de un contenedor asociativo que no se repite devolverá un objeto de tipo par, el primer miembro es un iterador de contenedor y el segundo miembro es de tipo bool.
La inserción es exitosa, primero es el elemento iterador y segundo es verdadero.
La inserción falló, el primero es el iterador del elemento existente, el segundo es falso.
5. P386 Borrar elemento (contenedor asociado)
El borrado de mapa tiene tres tipos de parámetros, y los valores de retorno también son diferentes.
forma | valor devuelto |
---|---|
erase(val) //borra el elemento cuya palabra clave es val | el número de elementos eliminados |
erase(iterator) //Eliminar el elemento del iterador especificado | siguiente iterador del iterador |
erase(iterator_first, iterator_second) //Eliminar elementos dentro del rango del iterador especificado, rango: [primero, segundo) | iterador_segundo |
Seis Operación de subíndice del mapa P387
Para buscar en el mapa, debe elegir diferentes métodos según el escenario de uso.
método de búsqueda mapa<K, V> m; |
escena común |
---|---|
m[k] | Encuentre k, espere agregar k cuando no haya. |
m en (k) | Encuentre k, espere lanzar una excepción cuando no haya (fuera_de_rango) |
m.encontrar(k) | Busque k. Si no hay k, no quiero cambiar el mapa y no quiero lanzar una excepción. |
Por favor corrígeme si hay algún error.