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".