std::includes
|
|
Esta página se ha traducido por ordenador/computador/computadora de la versión en inglés de la Wiki usando Google Translate.
La traducción puede contener errores y palabras aparatosas/incorrectas. Planea sobre el texto para ver la versión original. Puedes ayudar a corregir los errores y mejorar la traducción. Para instrucciones haz clic aquí. |
| Definido en el archivo de encabezado <algorithm>
|
||
template< class InputIt1, class InputIt2 > bool includes( InputIt1 first1, InputIt1 last1, InputIt2 first2, InputIt2 last2 ); |
(1) | |
template< class InputIt1, class InputIt2 > bool includes( InputIt1 first1, InputIt1 last1, InputIt2 first2, InputIt2 last2, Compare comp ); |
(2) | |
true si cada elemento de la gama [first2, last2) ordenados se encuentra dentro de la gama [first, last) ordenados. También regresa true [first2, last2) si está vacío . true if every element from the sorted range [first2, last2) is found within the sorted range [first, last). Also returns true if [first2, last2) is empty. You can help to correct and verify the translation. Click here for instructions.
operator<, la segunda versión espera que se solucionó con la función de comparación dado comp .operator<, the second version expects them to be sorted with the given comparison function comp.You can help to correct and verify the translation. Click here for instructions.
Parámetros
| first1, last1 | - | la gama ordenada de elementos a examinar
Original: the sorted range of elements to examine The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. |
| first2, last2 | - | la gama ordenada de elementos que desea buscar
Original: the sorted range of elements to search for The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. |
| comp | - | objeto función de comparación (es decir, un objeto que satisface los requerimientos de Compare) que devuelve true si el primer argumento es menor que el segundo. La signatura de la función de comparación deberá ser equivalente a lo siguiente:
Mientras que la signatura no necesita ser |
| Requisitos de tipo | ||
-InputIt debe reunir los requerimientos de InputIterator.
| ||
Valor de retorno
true si cada elemento de [first2, last2) es un miembro de [first, last) .true if every element from [first2, last2) is a member of [first, last).You can help to correct and verify the translation. Click here for instructions.
Complejidad
= std::distance(first1, last1) y N2 = std::distance(first2, last2) .= std::distance(first1, last1) and N2 = std::distance(first2, last2).You can help to correct and verify the translation. Click here for instructions.
Posible implementación
| Primera versión |
|---|
template<class InputIt1, class InputIt2>
bool includes(InputIt1 first1, InputIt1 last1,
InputIt2 first2, InputIt2 last2)
{
for (; first2 != last2; ++first1)
{
if (first1 == last1 || *first2 < *first1)
return false;
if ( !(*first1 < *first2) )
++first2;
}
return true;
}
|
| Segunda versión |
template<class InputIt1, class InputIt2>
bool includes(InputIt1 first1, InputIt1 last1,
InputIt2 first2, InputIt2 last2, Compare comp)
{
for (; first2 != last2; ++first1)
{
if (first1 == last1 || comp(*first2, *first1))
return false;
if (!comp(*first1, *first2))
++first2;
}
return true;
}
|
Ejemplo
#include <iostream>
#include <algorithm>
#include <cctype>
int main()
{
std::vector<char> v1 {'a', 'b', 'c', 'f', 'h', 'x'};
std::vector<char> v2 {'a', 'b', 'c'};
std::vector<char> v3 {'a', 'c'};
std::vector<char> v4 {'g'};
std::vector<char> v5 {'a', 'c', 'g'};
std::vector<char> v6;
for (auto i : v1) std::cout << i << ' ';
std::cout << "includes:\n";
for (auto i : v2) std::cout << i << ' ';
std::cout << ": " << std::includes(v1.begin(), v1.end(), v2.begin(), v2.end()) << '\n';
for (auto i : v3) std::cout << i << ' ';
std::cout << ": " << std::includes(v1.begin(), v1.end(), v3.begin(), v3.end()) << '\n';
for (auto i : v4) std::cout << i << ' ';
std::cout << ": " << std::includes(v1.begin(), v1.end(), v4.begin(), v4.end()) << '\n';
for (auto i : v5) std::cout << i << ' ';
std::cout << ": " << std::includes(v1.begin(), v1.end(), v5.begin(), v5.end()) << '\n';
for (auto i : v6) std::cout << i << ' ';
std::cout << ": " << std::includes(v1.begin(), v1.end(), v6.begin(), v6.end()) << '\n';
auto cmp_nocase = [](char a, char b) {
return std::tolower(a) < std::tolower(b);
}
std::vector<char> v7 {'A', 'B', 'C'};
for (auto i : v7) std::cout << i << ' ';
std::cout << ": "
<< std::includes(v1.begin(), v1.end(), v7.begin(), v7.end(), cmp_nocase)
<< '\n';
}
Salida:
a b c f h x includes:
a b c : 1
a c : 1
g : 0
a c g : 0
A B C : 1
Ver también
| Calcula la diferencia entre dos conjuntos. (plantilla de función) | |
| Busca una subsecuencia de elementos. (plantilla de función) |