Exemplos de uso de algumas funções da biblioteca algorithm em C++

Ela possui uma variedade de propósitos como por exemplo: pesquisa, classificação, contagem e manipulação de dados.


Exemplos de uso de algumas funções da biblioteca algorithm em C++

Na Biblioteca Padrão do C++ , algoritmos são componentes que executam operações algorítmicas em contêineres e outras sequências.

O padrão C++ fornece alguns algoritmos padrão coletados no cabeçalho padrão: <algorithm>. Vários algoritmos também estão no cabeçalho: <numeric>. Todos os algoritmos estão no namespace std.

São quase 100 funções disponíveis entre elas há essa lista:

Clique aqui para ver a lista
  1. accumulate
  2. adjacent_difference
  3. adjacent_find
  4. all_of
  5. any_of
  6. binary_search
  7. clamp
  8. copy
  9. copy_backward
  10. copy_if
  11. copy_n
  12. count
  13. count_if
  14. equal
  15. equal_range
  16. fill
  17. fill_n
  18. find
  19. find_first_of
  20. find_if
  21. find_if_not
  22. for_each
  23. for_each_n
  24. generate
  25. includes
  26. iota
  27. is_heap
  28. is_permutation
  29. is_sorted
  30. iter_swap
  31. lexicographical_compare
  32. linear_search
  33. lower_bound
  34. make_heap
  35. max
  36. max_element
  37. merge
  38. min
  39. min_element
  40. minimax_element
  41. minmax
  42. minmax_element
  43. mismatch
  44. move
  45. next_permutation
  46. none_of
  47. nth_element
  48. partition
  49. pop_heap
  50. prev_permutation
  51. push_heap
  52. random_shuffle
  53. remove
  54. remove_copy
  55. remove_copy_if
  56. remove_if
  57. replace
  58. replace_copy
  59. replace_copy_if
  60. replace_if
  61. reverse
  62. reverse_copy
  63. rotate
  64. search
  65. search_n
  66. set_difference
  67. set_intersection
  68. set_union
  69. shuffle
  70. sort
  71. stable_sort
  72. swap
  73. transform
  74. transform_reduce
  75. unique
  76. upper_bound

Alguns exemplos de uso

none_of

Esta função opera em toda a gama de elementos do array e verifica se há uma determinada propriedade em cada elemento e retorna true quando nenhum elemento no intervalo satisfaz a propriedade especificada, caso contrário, retorna false.

#include <vector> 
#include <algorithm> 
#include <iostream> 

int main() {
    std::vector<int> v {1, 3, 5, 7, 9, 11, 13, 15, 17, 19};
	
    if (std::none_of(v.begin(), v.end(), [](int i){ return i % 2 == 0; })){ 
        std::cout << "Não há nenhum número par nesse vector.\n"; 
    }else{
        std::cout << "Nesse vetor há pelo menos 1 número PAR.\n";
    }

    return 0;
}

remove_if

Remove os elementos do intervalo (primeiro, último) que satisfaçam uma condição e retorne um novo iterador passado para o novo final do intervalo.

#include <vector> 
#include <algorithm> 
#include <iostream> 

int main() {
    auto isOdd = [](int i) {
        return (( i % 2 ) == 1);
    };

    std::vector<int> v {1, 2, 3, 4, 5};

    // Remove todos os elementos que é verdadeiro de acordo com isOdd
    auto newEndIt = std::remove_if(v.begin(), v.end(), isOdd);
    
    // Limpa os elementos
    v.erase(newEndIt, v.end());

    // v agora é: 2 e 4
    for (auto value : v) { 
        std::cout << value << " "; 
    }
    std::cout << '\n';

    return 0;
}

random_shuffle

Ele reorganiza aleatoriamente os elementos no intervalo [primeiro, último]. A função troca o valor de cada elemento por algum outro elemento escolhido aleatoriamente. Quando fornecida, a função determina qual elemento é selecionado em cada caso. Caso contrário, a função usa alguma fonte não especificada de aleatoriedade.

#include <iostream> 
#include <vector> 
#include <algorithm> 
#include <ctime>

int myrandom (int);

int main() {

  std::srand(unsigned(time(0)));
  std::vector<int> mylist;

  for (int j = 1; j < 10; ++j){
    mylist.push_back(j);
  }

  std::random_shuffle(mylist.begin(), mylist.end());

  std::random_shuffle(mylist.begin(), mylist.end(), myrandom);

  std::cout << "mylist contém:";
  for (auto i = mylist.begin(); i != mylist.end(); ++i){
    std::cout << ' ' << *i;
  }

  std::cout << "\n";

  return 0;
} 

int myrandom (int i) {
  return std::rand() % i;
}

Algumas outras funções dessa biblioteca já falamos no cpp::daily e mais informações você pode obter aqui.


Por hoje é só!

Acompanhe o cpp::daily

Deseja aprender C++ e criar seus programas Gráficos e para Terminal com portabilidade para Linux e Windows?

Então se inscreva nos nossos Cursos de C++ Moderno . Você aprender criar:

Acesse o endereço:

https://terminalroot.com.br/cpp/ e saiba mais!


cppdaily cpp


Compartilhe


Nosso canal no Youtube

Inscreva-se


Marcos Oliveira

Marcos Oliveira

Desenvolvedor de software
https://github.com/terroo


Crie Aplicativos Gráficos para Linux e Windows com C++

Aprenda C++ Moderno e crie Games, Programas CLI, GUI e TUI de forma fácil.

Saiba Mais

Receba as novidades no seu e-mail!

Após cadastro e confirmação do e-mail, enviaremos semanalmente resumos e também sempre que houver novidades por aqui para que você mantenha-se atualizado!