Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

funkcja find_if

Ostatnio zmodyfikowano 2016-01-17 18:09
Autor Wiadomość
baelish
Temat założony przez niniejszego użytkownika
funkcja find_if
» 2016-01-17 14:31:05

W opisie funkcji (http://cpp0x.pl/dokumentacja/standard-C++/find_if/323) wstawiony został fragment kodu dotyczący działania funkcji find_if:

 
C/C++
#include <iostream>
#include <algorithm>
using namespace std;

bool isEven( int x )
{
    return x % 2 == 0;
}

int main()
{
    int a[ 8 ] = { 3, 7, 61, 97, 53, 666, 42, 12 };
   
    int * it = find_if( a, a + 8, isEven );
    if( it == a + 8 )
    {
        cout << "nie znaleziono liczby parzystej\n";
    }
    else
    {
        cout << "pierwsza liczba parzysta to " << * it << '\n';
    }
}
W wyniku kompilacji wyświetli się pierwsza liczba parzysta: 666.

Chciałbym spytać w jaki sposób można wyświetlić wszystkie kolejne parzyste, czyli 42 i 12.
P-143635
j23
» 2016-01-17 14:50:14
C/C++
int a[ 8 ] = { 3, 7, 61, 97, 53, 666, 42, 12 };


int * a1 = a;
int * a2 = a1 + 8;

while(( a1 = find_if( a1, a2, isEven ) ) != a2 )
{
    cout << * a1 << '\n';
    ++a1;
}
P-143637
baelish
Temat założony przez niniejszego użytkownika
find_if
» 2016-01-17 15:28:04
A co w przypadku, gdy nie pracuje na tablicy tylko na liście?

Poniższy kod pokazuje wyraz, który jest dłuższy niż 5 znaków. Jednak pokazuje tylko jeden wyraz, a kolejnych już nie. Jak go przerobić żeby pokazał wszystkie takie wyrazy?


 
C/C++
bool powPiec( const string & arg ) {
    return arg.length() > 5;
   
    int main() {
        list < string > lista = { "aaaa", "bbbb", "abcdeg", "ghijklm" }
       
        auto piec = find_if( lista.begin(), lista.end(), powPiec );
       
        if( longer != lista.end() )
       
             cout << * piec << endl;
       
        else
       
        cout << "brak wyrazow powyzej piec liter"
       
             return 0;
       
    }
P-143638
j23
» 2016-01-17 18:09:16
Tak samo, z wyjątkiem definicji a1 i a2:
C/C++
auto a1 = lista.begin();
auto a2 = lista.end();
P-143660
« 1 »
  Strona 1 z 1