C++/summary

STL 알고리즘 Count

gandus 2010. 11. 1. 10:22

타입재정의

typedef int size_t;  

size_t a;  // int a


콜백 함수이다. - > count_if (반복자, 반복자,  함수주소)

함수 안에서 또 다른 함수를 불러온다.









#include<iostream>

#include<string>

#include<vector>

#include<algorithm>

using namespace std;

 

template <typename T>

bool is_even(const T& num){

       

        return (num % 2) == 0;

}

 

bool is_blank(char c){ // 공백을구하는함수.

        if( c==' ')

               return true;

        else

               return false;

}

void main(){

 

        char *s = "I go to the school";

 

        vector<int> vec;

        for(int i=0; i<10; i++)

               vec.push_back(i);

 

       

        size_t n1 = count(s, s+strlen(s), 'o');

        size_t n2 = count_if(vec.begin(), vec.end(), is_even<int>);

         // 콜백 함수이다. 함수에서 함수를 호출하는것
         
         // 또한 시작반복자와 호출하는 함수의 타입이 맞아야 한다.

        size_t n3 = count_if(s, s+strlen(s), is_blank);

 

        cout<<endl;

        cout<<"값이'o'인요소갯수: " <<n1 <<endl;

        cout<<"값이짝수인요소갯수: " <<n2 <<endl;

        cout<<"값이공백인요소갯수: " <<n3 <<endl; 

}