namespace cpp {}

C++ lernen, kennen, anwenden

Benutzer-Werkzeuge

Webseiten-Werkzeuge


kennen:lib:find_end

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.


kennen:lib:find_end [2020-06-14 14:38] (aktuell) – angelegt - Externe Bearbeitung 127.0.0.1
Zeile 1: Zeile 1:
 +====== find_end() ======
 +''#include'' [[..:include:algorithm]]
 +
 +<code cpp>
 +For find_end (For first, For last, For2 first2, For2 last2) 
 +For find_end (For first, For last, For2 first2, For2 last2, Binary pred) 
 +For find_end (Exec pol, For first, For last, For2 first2, For2 last2) 
 +For find_end (Exec pol, For first, For last, For2 first2, For2 last2, Binary pred) 
 +
 +Range ranges::find_end (Range1 r1, Range2 r2, Binary pred = {}, Proj1 proj1, Proj2 proj2) 
 +Range ranges::find_end (For first, For last, For2 first2, For2 last2, Binary pred = {}, Proj1 proj1, Proj2 proj2) 
 +</code>
 + Findet den letzten Teilbereich aus [first,last), 
 + der mit [first2,last2) übereinstimmt bzw. 
 + für dessen Elemente ''x'' das Prädikat ''pred(proj1(x), proj2(y))'' mit den entsprechenden Elementen y aus [first2,last2) zutrifft.
 +
 +==== Parameter ====
 +| ''first''  | Anfang eines Bereiches |
 +| ''last''   | Ende eines Bereiches |
 +| ''first2'' | Anfang der Suchmenge |
 +| ''last2''  | Ende der Suchmenge |
 +| ''pred''   | zweistelliges Prädikat (Vorgabe = ''equal_to'') |
 +| ''proj1'', ''proj2''  | einstelliger Funktor (Vorgabe = ''std::identity'') |
 +| ''pol''   | [[..:include:execution|parallele Ausführungsart]] |
 +==== Ergebnis ====
 +Rückgabewert: Iterator ''i'' auf erstes Element des bzw. der Teilbereich
 +''{i, i + (i == last1 ? 0 : last2 - first2)}'',
 +bei dem ''*i == *j'' bzw. ''pred(proj1(*i),proj2(*j))'' mit den entsprechenden Iteratoren ''j'' der Suchmenge erfüllt ist.
 +Wurde kein solcher Teilbereich gefunden, wird ''last'' bzw. ein leerer Bereich ''{last,last}'' geliefert.
 +==== Siehe auch ====
 +[[search]].
 +
 +==== Beispiel ====
 +<code cpp find_end.cpp>
 +#include <algorithm>
 +#include <iostream>
 +
 +int main()
 +{
 +  const char str[] = "Hallo Welt";
 +  const char vokal[] = "aeiuo";
 +
 +  const char *pos = std::find_end(str, str+10, vokal, vokal+5);
 +    
 +  if (pos != end(str)) 
 +  {
 +    std::cout << pos << '\n';
 +  }
 +}
 +</code>
 +
 +<code cpp rg_find_end.cpp>
 +#include <algorithm>
 +#include <iostream>
 +#include <string>
 + 
 +int main()
 +{
 +  std::string heuhaufen = "Mississippi";
 +  std::string nadel = "is";
 + 
 +  auto r = std::ranges::find_end(heuhaufen, nadel);
 +  auto n = r.begin() - heuhaufen.begin();
 +
 +  std::cout 
 +    << heuhaufen << '\n'
 +    << std::string(n, ' ') << nadel << '\n';
 +}
 +</code>
  

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki