2010-07-14 11 views
12

Duplicar posible:
How to find an item in a std::vector?¿Cómo puedo verificar la existencia del elemento en std :: vector, en una oración?

Esto es lo que estoy buscando:

#include <vector> 
std::vector<int> foo() { 
    // to create and return a vector 
    return std::vector<int>(); 
} 
void bar() { 
    if (foo().has(123)) { // it's not possible now, but how? 
    // do something 
    } 
} 

En otras palabras, estoy buscando una sintaxis corto y sencillo para validar la existencia de un elemento en un vector. Y no quiero introducir otra variable temporal para este vector. ¡Gracias!

Respuesta

6
int elem = 42; 
std::vector<int> v; 
v.push_back(elem); 
if(std::find(v.begin(), v.end(), elem) != v.end()) 
{ 
    //elem exists in the vector 
} 
26

vector Unsorted:

if (std::find(v.begin(), v.end(),value)!=v.end()) 
    ... 

vector Ordenado:

if (std::binary_search(v.begin(), v.end(), value) 
    ... 

P.S. puede necesitar incluir <algorithm> cabecera

+1

+1 para el P. S., me dieron el código de varias fuentes, pero no sabía que incluya la cabecera y por lo tanto mi código estaba dando error. Gracias. –

1

Trate std::find

vector<int>::iterator it = std::find(v.begin(), v.end(), 123); 

if(it==v.end()){ 

    std::cout<<"Element not found"; 
} 
+2

Seguramente la condición if() debería ser! =? – JBRWilkinson

+0

¡Sí! editado .... –

Cuestiones relacionadas