namespace cpp {}

C++ lernen, kennen, anwenden

Benutzer-Werkzeuge

Webseiten-Werkzeuge


kennen:lib:search

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.


kennen:lib:search [2020-06-14 15:18] (aktuell) – angelegt - Externe Bearbeitung 127.0.0.1
Zeile 1: Zeile 1:
 +====== search() ======
 +''#include'' [[..:include:algorithm]]
 +
 +<code cpp>
 +For search (For first, For last, For2 first2, For2 last2) 
 +For search (For first, For last, For2 first2, For2 last2, Binary pred) 
 +
 +For search (Exec pol, For first, For last, For2 first2, For2 last2) 
 +For search (Exec pol, For first, For last, For2 first2, For2 last2, Binary pred) 
 +
 +Range ranges::search (Range1 r1, Range2 r2, Binary pred = {}, Proj1 proj1 = {}, Proj2 proj2 = {}) 
 +Range ranges::search (For first, For last, For2 first2, For2 last2, Binary pred = {}, Proj1 proj1 = {}, Proj2 proj2 = {}) 
 +
 +For search (For first, For last, For2 first2, For2 last2, Searcher searcher) // C++17
 +</code>
 + Sucht den Anfang eines Teilbereiches aus [first,last), 
 + der mit [first2,last2) übereinstimmt, das Prädikat ''pred(proj1(x),proj2(y))'' erfüllt bzw. 
 + dem Muster eines [[#searcher]]-Objekts entspricht. 
 + 
 +
 +==== Parameter ====
 +| ''first'' | Anfang des Bereiches |
 +| ''last''  | Ende des Bereiches |
 +| ''first2''| Anfang des Vorgabebereiches |
 +| ''last2'' | Ende des Vorgabebereiches |
 +| ''pred''   | zweistelliges Prädikat (Vorgabe = ''equal_to'') |
 +| ''proj1'', ''proj2''  | einstelliger Funktor (Vorgabe = ''std::identity'') |
 +| ''pol''   | [[..:include:execution|parallele Ausführungsart]] |
 +| ''searcher''  | [[#Sucher]]-Objekt |
 +
 +
 +==== Ergebnis ====
 +Rückgabewert: Iterator auf den Anfang des gefundenen Bereiches oder ''last''.
 +
 +==== Siehe auch ====
 +[[find_end]],
 +[[search_n]].
 +
 +==== Beispiel ====
 +<code cpp search.cpp>
 +#include <algorithm>
 +#include <iostream>
 +#include <string>
 +
 +int main()
 +{
 +  std::string s = "Hallo Welt";
 +  std::string sequence = "ALL";
 +  std::cout << s << '\n';
 +
 +  auto pos = std::search(begin(s), end(s), begin(sequence), end(sequence),
 +      [](char a, char b) { return std::tolower(a) == std::tolower(b); } // ignore case   
 +    );
 +
 +  std::cout << " " << std::string(pos, end(s)) << '\n'
 +            << " " << sequence << '\n';
 +}
 +</code>
 +
 +==== Sucher ====
 +[[..:..:kennen:begriffe#C++17]] definiert in [[..:include:functional]] 3 Sucher-Objekte:
 +  * ''default_searcher'', der den naiven Suchalgorithmus verwendet, sowie
 +  * ''boyer_moore_searcher'' und
 +  * ''boyer_horspool_moore_searcher'', welche die gleichnamigen Algorithmen implementieren.
 +Die Angabe eines zweistelligen Prädikats anstelle von ''='' ist als drittes Argument möglich.
 +<code cpp searcher.cpp>
 +#include <algorithm>
 +#include <functional>
 +#include <iostream>
 +#include <string>
 +
 +int main()
 +{
 +  std::string s = "Hallo Welt";
 +  std::string sequence = "all";
 +  std::cout << s << '\n';
 +
 +  auto pos = std::search(begin(s), end(s),
 +        std::boyer_moore_searcher(begin(sequence), end(sequence))   
 +    );
 +
 +  std::cout << " " << std::string(pos, end(s)) << '\n'
 +            << " " << sequence << '\n';
 +  return 0;
 +}
 +</code>
  
kennen/lib/search.txt · Zuletzt geändert: 2020-06-14 15:18 von 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki