programacion - setw c++ ejemplo
¿Comprobar si un std:: vector contiene un determinado objeto? (3)
Comprobando si v
contiene el elemento x
:
#include <algorithm>
if(std::find(v.begin(), v.end(), x) != v.end()) {
/* v contains x */
} else {
/* v does not contain x */
}
Comprobando si v
contiene elementos (no está vacío):
if(!v.empty()){
/* v is non-empty */
} else {
/* v is empty */
}
Posible duplicado:
¿Cómo encontrar un artículo en un std :: vector?
¿Hay algo en <algorithm>
que le permite verificar si un std :: container contiene algo? O, una forma de hacer uno, por ejemplo:
if(a.x == b.x && a.y == b.y)
return true;
return false;
¿Se puede hacer esto solo con std::map
ya que usa claves?
Gracias
Si la búsqueda de un elemento es importante, recomendaría std::set
lugar de std::vector
. Usando esto:
std::find(vec.begin(), vec.end(), x)
ejecuta en tiempo O (n), pero std::set
tiene su propio miembro find()
(es decir, myset.find(x)
) que se ejecuta en tiempo O (log n), que es mucho más eficiente con una gran cantidad de elementos
std::set
también garantiza que todos los elementos agregados son únicos, lo que le evita tener que hacer algo como if not contained then push_back()...
Vea la pregunta: ¿Cómo encontrar un artículo en un std :: vector?
También deberá asegurarse de haber implementado un operator==()
adecuado operator==()
para su objeto, si el predeterminado no es suficiente para una prueba de igualdad "profunda".