Cargando...

La biblioteca algorithm de C++: sort, find, count

Aprende la biblioteca algorithm de C++, incluyendo sort, find, count y otros algoritmos STL para procesar datos eficientemente.

La biblioteca C++ <algorithm> ofrece funciones potentes y muy utilizadas para trabajar de forma eficiente con vectores y otros contenedores de la STL. En este artículo se explican tres de las funciones más comunes: sort, find y count, cada una acompañada de ejemplos prácticos.


1) La función sort

std::sort ordena un rango (como un vector o un arreglo) en orden ascendente por defecto. Su complejidad promedio es de O(n log n).

Uso básico


#include <algorithm>
#include <vector>
#include <iostream>
using namespace std;

int main() {
    vector<int> v = {30, 10, 40, 20};

    sort(v.begin(), v.end());

    for (int n : v)
        cout << n << " ";
}

Salida: 10 20 30 40

Orden descendente


sort(v.begin(), v.end(), greater<int>());

Comparador personalizado


sort(v.begin(), v.end(), [](int a, int b) {
    return a % 10 < b % 10; // ordenar por el último dígito
});

2) La función find

std::find busca un valor dentro de un rango y devuelve un iterador a la primera coincidencia. Si el valor no se encuentra, devuelve el iterador end().


#include <algorithm>
#include <vector>
#include <iostream>
using namespace std;

int main() {
    vector<int> v = {10, 20, 30, 40};

    auto it = find(v.begin(), v.end(), 30);

    if (it != v.end())
        cout << "Encontrado: " << *it;
    else
        cout << "No encontrado";
}

Búsqueda en un vector de cadenas


vector<string> names = {"Alicia", "Emma", "Juan"};

auto it = find(names.begin(), names.end(), "Emma");

3) La función count

std::count permite contar cuántas veces aparece un valor específico dentro de un rango.


#include <algorithm>
#include <vector>
#include <iostream>
using namespace std;

int main() {
    vector<int> v = {10, 20, 20, 30, 20};

    int c = count(v.begin(), v.end(), 20);

    cout << "Número de 20: " << c;
}

Salida: Número de 20: 3

Conteo condicional (count_if)


int c = count_if(v.begin(), v.end(), [](int x) {
    return x % 2 == 0; // contar números pares
});

4) Ejemplo práctico — Conteo de palabras


#include <algorithm>
#include <vector>
#include <string>
#include <iostream>
using namespace std;

int main() {
    vector<string> words = {"cpp", "java", "cpp", "python", "cpp"};

    int cppCount = count(words.begin(), words.end(), "cpp");

    cout << "\"cpp\" aparece " << cppCount << " veces";
}

5) Uso combinado de sort, find y count


#include <algorithm>
#include <vector>
#include <iostream>
using namespace std;

int main() {
    vector<int> v = {50, 20, 10, 20, 40};

    sort(v.begin(), v.end()); // 10 20 20 40 50

    auto it = find(v.begin(), v.end(), 20); // primera aparición de 20

    int c = count(v.begin(), v.end(), 20); // contar los 20

    cout << "Primer 20 encontrado en el índice: " << (it - v.begin()) << endl;
    cout << "Total de 20: " << c;
}

6) ¿Cuándo usar cada una?

La biblioteca <algorithm> es una de las herramientas más potentes de la STL para realizar operaciones eficientes sobre contenedores.


7) TL;DR

  • sort: función de ordenamiento O(n log n)
  • find: busca un valor y devuelve un iterador
  • count: cuenta cuántas veces aparece un valor
  • count_if: cuenta según una condición
  • Ejemplos compatibles con Visual Studio 2022 y GCC.

Artículos relacionados