vectores resueltos programacion llenar imprimir funciones ejercicios ejemplos dev con como cadenas arreglos arreglo c++ sorting search vector find

c++ - resueltos - imprimir un arreglo en c



¿Cómo encontrar un valor en un vector ordenado de C++? (3)

Hay un método, std::equal_range , que le dará un par que contiene el límite inferior y superior del subconjunto que contiene el valor deseado. Si ambos elementos del par son idénticos, entonces el valor que estaba buscando no existe.

He buscado find y binary_search , pero find no aprovecha el hecho de que el vector está ordenado, y binary_search solo devuelve un verdadero o falso, no donde encontró el valor. ¿Hay alguna función que pueda darme lo mejor de ambos mundos?


std::lower_bound lo hará por usted. Está en la sección de comportamiento equivalente en la parte superior de binary_search.


template<class T, class U> bool contains(const std::vector<T>& container, const U& v) { auto it = std::lower_bound( container.begin(), container.end(), v, [](const T& l, const U& r){ return l < r; }); return it != container.end() && *it == v; }