Red de conocimiento informático - Problemas con los teléfonos móviles - Problemas con VC++ al recibir entradas del usuario

Problemas con VC++ al recibir entradas del usuario

Si es vc, entonces puede usar vector como una matriz dinámica, puede leer el uso detallado de vector, también se usará comúnmente en el futuro y no se desperdiciará.

Vector es parte de la biblioteca de plantillas estándar de C++. Es una biblioteca de clases y funciones de plantilla multifuncional que puede operar varias estructuras de datos y algoritmos. Vector se considera un contenedor porque puede almacenar varios tipos de objetos como un contenedor. En resumen, un vector es una matriz dinámica que puede almacenar cualquier tipo y tiene la capacidad de agregar y comprimir datos.

Para utilizar vector, debes incluir el siguiente código en el archivo de encabezado:

#include

el vector pertenece al espacio de nombres estándar, por lo que debes aprobar Calificarlo nombrándolo y completar tu código de la siguiente manera:

usando std::vector;

Esta es la primera vez que usas vector. vector;

vectorvInts;

O concatenarlos y usar el nombre completo:

std::vectorvInts;

p>

Se recomienda utilizar el método de espacio de nombres global:

Usar espacio de nombres std;<

Función

Expresión

c .

c.assign(begin,end)

Asigne los datos en el intervalo [beg; end) a c y asigne copias de n elementos a c.

c.at(idx)

Devuelve los datos a los que hace referencia el índice idx. Si idx está fuera de los límites, se arroja out_of_range.

c.begin()

Devuelve la primera dirección de datos en el iterador.

c.size()

Devuelve el número de datos en el contenedor.

c.clear()

Elimina todos los datos del contenedor.

c.empty()

Determina si el contenedor está vacío.

c.end()

Apunta al siguiente elemento final en el iterador, apuntando a un elemento que no existe.

c.erase(pos)

c.erase(beg,end)

Elimina los datos en la posición pos y devuelve la siguiente posición de datos.

Elimina los datos dentro del intervalo [beg,end] y devuelve la posición del siguiente dato.

c.front()

Devuelve los primeros datos.

get_allocator

Utiliza el constructor para devolver una copia.

c.insert(pos,elem)

c.insert(pos,n,elem)

c.insert(pos,begin,end)

Inserte una copia de elem en la posición pos y devuelva la nueva ubicación de datos. Inserte n elementos de datos en la posición pos. Sin valor de retorno. Inserte los datos en el intervalo [inicio, fin) en la posición pos. Sin valor de retorno.

c.max_size()

Devuelve la cantidad máxima de datos en el contenedor.

c.pop_back()

Eliminar los últimos datos.

c.push_back(elem)

Agrega un dato al final.

c.rbegin()

Devuelve los primeros datos de la cola inversa.

c.rend()

Devuelve la siguiente posición de los últimos datos en la cola inversa.

c.resize(num)

Especifique la longitud de la cola.

c.reserve()

Reserve la capacidad adecuada.

c.size()

Devuelve la cantidad real de datos en el contenedor.

c1.swap(c2)

swap(c1,c2)

Intercambia los elementos en c1 y c2. El funcionamiento es el mismo que el anterior.

vector

cvector c1(c2)

vector c(n)

ector < Elem> c(n, elem)

vector c(beg,end)

c.~ Copia un vector. Cree un vector que contenga n datos, todos generados a partir de la estructura predeterminada.

Crea un vector que contenga n copias de elem.

Crea un vector con intervalos [beg;end].

Operador[]

Devuelve una referencia a la ubicación especificada en el contenedor.

Creación de vectores

Los contenedores de vectores proporcionan una variedad de métodos de creación. Los siguientes son algunos métodos comunes.

Crea un objeto vectorial vacío de tipo Widget:

vector vWidgets;

Crea un vector que contiene 500 datos de tipo Widget:

vector

Crea un vector que contiene 500 datos de tipo Widget, todos los datos se inicializan a 0:

vector vWidgets( 500, Widget (0));

Crea una copia del Widget:

vector vWidgetsFromAnother(vWidgets);

Agrega datos al vector

p>

El método predeterminado para agregar datos a un vector es push_back(). Por ejemplo, para agregar 10 datos al vector , necesita escribir el siguiente código:

for(int i= 0;i<10; i++) {

vWidgets.push_back(Widget(10))). push_back(Widget(i));

}

Obtener los datos en la posición especificada en el vector

Los datos en el vector se asignan dinámicamente, use push_back() Se realiza una serie de asignaciones que generalmente determinan el archivo o alguna fuente de datos. Si desea saber la cantidad de datos en un vector, puede usar vacío(). Para obtener el tamaño de un vector, puedes usar size(). Por ejemplo, si desea obtener el tamaño del vector v pero no sabe si está vacío o si ya contiene datos, y si está vacío desea establecerlo en -1, puede usar el siguiente código para lograrlo. :

int nSize = v.empty() ?-1 : static_cast(v.size());

Accede a los datos en el vector

Utilice dos vectores de acceso a métodos.

1. vector::at()

2. vector::operator[]

operator[] se utiliza principalmente para la compatibilidad con el lenguaje C. Puede manipularse como una matriz C. Pero at() es nuestra primera opción porque at() realiza la verificación de límites y genera una excepción si el acceso excede el alcance del vector.

Dado que el operador [] es propenso a errores, rara vez lo usamos. Aquí hay una verificación:

Analice el siguiente código:

vector v;

v.at(7);< br/> // Verificación de límites: se lanzará si está fuera de rango
} catch(constException& e) {

cout << what(). ;

cout << e.what();

}

Eliminar datos de vectores

Los vectores hacen que sea muy fácil agregarlos data, también puedes eliminar datos muy fácilmente. De manera similar, vector proporciona erase(), pop_back() y clear() para eliminar datos.

Algoritmo Remove_if() Si desea utilizar remove_if(), debe incluir el siguiente código en el archivo de encabezado:

#include

Remove_if() tiene tres parámetros:

1. iterator_First: puntero del iterador que apunta al primer dato.

2. iterador _Last: puntero del iterador que apunta al último dato.

3. ㄊ_Pred: una función condicional que puede operar en iteración.

Función condicional

Una función condicional es una función que devuelve un resultado de sí o no según las condiciones definidas por el usuario. Es el puntero de función más básico, o un objeto de función. Este objeto de función debe admitir todas las operaciones de llamada de función y las operaciones de sobrecarga del operador()(). remove_if() se hereda a través de unary_function, lo que permite pasar datos como condición.

Por ejemplo, supongamos que desea eliminar datos coincidentes de un vector si la cadena contiene un valor, comienza con ese valor y termina con ese valor.

Primero, debe crear una estructura de datos que contenga los datos, similar al siguiente código:

#include

enum findmodes {

FM_INVALID = 0,

FM_IS,

FM_ STARTSWITH,

FM_ENDSWITH,

FM_CONTAINS

};

typedef struct tagFindStr {

UINT iMode;

CString szMatchStr.

}FindStr;

typedef FindStr* LPFINDSTR;

p>

Luego procese el juicio condicional:

class FindMatchingString: public std::unary_function<.CString, bool> {

public:

FindMatchingString(const LPFINDSTR lpFS):

m_lpFS(lpFS) {

}

operador bool()( CString& szStringToCompare) const {

bool retVal = false;

cambiar (m_lpFS->iMode) {

case FM_IS: {

retVal = ( szStringToCompare == m_lpFDD-> szMatchStr);

p>

break;

}

case FM_STARTSWITH: {

retVal = (szStringToCompare.left(m_ lpFDD- >szMatchStr.GetLength())

== m_lpFDD->szWindowTitle);

romper;

}

case FM_ENDSWITH: {

retVal = ( szStringToCompare.Right(m_lpFDD->szMatchStr.GetLength())