Algorytmy (C++ nowoczesny)
Nowoczesne programowania C++, zaleca się używanie algorytmów w Bibliotekę (STL).Oto niektóre ważne przykłady:
for_each, który jest domyślny algorytm przechodzenia.(Również transform dla semantyki nie w miejscu.)
find_if, który jest domyślny algorytm wyszukiwania.
sort, lower_boundi inne domyślne algorytmów wyszukiwania i sortowania.
Aby zapisać w komparatorze, użyj ścisłych < i o nazwie lambdas kiedy można.
auto comp = []( const widget& w1, const widget& w2 )
{ return w1.weight() < w2.weight(); }
sort( v.begin(), v.end(), comp );
auto i = lower_bound( v.begin(), v.end(), comp );
Pętle
Jeśli to możliwe, używać oparte na zakresie for pętli lub algorytm wywołania lub zarówno zamiast odręcznego pętli.copy, transform, count_if, remove_if, oraz inne osoby takie są znacznie lepiej niż odręczny pętli, ponieważ ich zamiarem jest oczywiste i one ułatwić pisanie kodu wolne od błędów.Ponadto wiele algorytmów STL mają optymalizacji wdrażania, które czynią je bardziej efektywne.
Zamiast starych C++ następująco:
for( auto i = strings.begin(); i != strings.end(); ++i ) {
:::
:::
}
auto i = v.begin();
for( ; i != v.end(); ++i ) {
if (*i > x && *i < y) break;
}
Użyj nowoczesnych języka C++ to:
for_each( begin(strings), end(strings), []( string& s ) {
:::
:::
} );
auto i = find_if( begin(v), end(v), [=](int i) { return i > x && i < y; } );
Zakres oparty na pętle
Na zakres for pętli jest C ++ funkcji języka 11, nie algorytm STL.Ale zasługuje na wzmiankę w tej dyskusji o pętli.Oparte na zakresie for pętli stanowią rozszerzenie for słowa kluczowego i zapewniają wygodny i skuteczny sposób zapisu pętli, które iteracyjne zakres wartości.Pojemniki STL, ciągi i tablice są gotowe do oparte na zakresie for pętli.Aby włączyć to nowe elementy składni iteracji typu zdefiniowane przez użytkownika, należy dodać obsługę następujących:
A begin metodę, która zwraca iterację do początku struktury i end metodę, która zwraca iterację na koniec struktury.
Wsparcie w iteratora dla tych metod: operator*, operator!=, i operator++ (wersja prefiksu).
Metody te można członków lub funkcji autonomicznych.