Encuentre el índice de elementos en Vector en C++
- Utilice la función personalizada para encontrar el índice de elementos en Vector en C++
-
Utilice el algoritmo
std::find
para encontrar el índice de elementos en un vector en C++ -
Utilice el algoritmo
std::find_if
para encontrar el índice de elementos en un vector en C++
Este artículo explicará varios métodos de cómo encontrar el índice de elementos en un vector en C++.
Utilice la función personalizada para encontrar el índice de elementos en Vector en C++
Podemos utilizar una función de búsqueda lineal personalizada para encontrar la posición del elemento dado en el vector
. Tenga en cuenta que este es un método bastante ineficaz para resolver este problema. En el siguiente código de ejemplo, declaramos un vector
de números enteros y buscamos una posición de elemento arbitraria, que generamos si la llamada es exitosa.
#include <iostream>
#include <string>
#include <vector>
using std::cerr;
using std::cout;
using std::endl;
using std::string;
using std::vector;
int findIndex(const vector<int> &arr, int item) {
for (auto i = 0; i < arr.size(); ++i) {
if (arr[i] == item) return i;
}
return -1;
}
int main(int argc, char *argv[]) {
vector<int> arr = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
auto pos = findIndex(arr, 32);
pos != -1
? cout << "Found the element " << 32 << " at position " << pos << endl
: cout << "Could not found the element " << 32 << " in vector" << endl;
exit(EXIT_SUCCESS);
}
Producción :
Could not found the element 32 in vector
Utilice el algoritmo std::find
para encontrar el índice de elementos en un vector en C++
Alternativamente, podemos usar el algoritmo std::find
que es parte de la biblioteca STL. Esta función devuelve el iterador al primer elemento que satisface la condición. Por otro lado, si no se encuentra ningún elemento, el algoritmo devuelve el último elemento del rango. Sin embargo, tenga en cuenta que el iterador devuelto debe reducirse mediante el iterador begin
para calcular la posición.
#include <iostream>
#include <string>
#include <vector>
using std::cerr;
using std::cout;
using std::endl;
using std::string;
using std::vector;
int findIndex2(const vector<int> &arr, int item) {
auto ret = std::find(arr.begin(), arr.end(), item);
if (ret != arr.end()) return ret - arr.begin();
return -1;
}
int main(int argc, char *argv[]) {
vector<int> arr = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
auto pos2 = findIndex2(arr, 10);
pos2 != -1
? cout << "Found the element " << 10 << " at position " << pos2 << endl
: cout << "Could not found the element " << 10 << " in vector" << endl;
exit(EXIT_SUCCESS);
}
Producción :
Found the element 10 at position 9
Utilice el algoritmo std::find_if
para encontrar el índice de elementos en un vector en C++
Otro método para encontrar el índice del elemento es invocar el algoritmo std::find_if
. Es similar a std::find
excepto que el tercer argumento puede ser una expresión de predicado para evaluar cada elemento iterado. Si la expresión devuelve verdadero, el algoritmo volverá. Observe que pasamos la expresión lambda como tercer argumento, que comprueba si el elemento es igual a 10
.
#include <iostream>
#include <string>
#include <vector>
using std::cerr;
using std::cout;
using std::endl;
using std::string;
using std::vector;
int main(int argc, char *argv[]) {
vector<int> arr = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
auto ret =
std::find_if(arr.begin(), arr.end(), [](int x) { return x == 10; });
if (ret != arr.end())
cout << "Found the element " << 10 << " at position " << ret - arr.begin()
<< endl;
exit(EXIT_SUCCESS);
}
Producción :
Found the element 10 at position 9
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook