STL 函式物件學習

2021-06-22 03:26:15 字數 2066 閱讀 4963

函式物件:乙個過載了運算子()的個物件,可以像乙個函式一樣使用。

①普通的函式

bool comp(int val)

②函式物件,宣告為模板類,並可以接受引數,具有更大擴充套件性

templateclass comp

bool operator() (t val)

private:

t m_val;

};

呼叫上面兩種情況,實際是一樣,但是函式物件可以設定引數,能夠靈活控制比較值大小

vectorvec;

for (int i = 1; i< 20; ++i)

vec.push_back(i);

int count = count_if(vec.begin(), vec.end(), comp);

cout<(5));

coutfor (char c = 'a'; c < 'z'; ++c)

c_vec.push_back(c);

cout<('c'))<③自己寫的統計函式

templateint count_n(t *arr, int n, func func)

呼叫統計函式

int arr = ;

count = count_n>(arr, sizeof(arr) / sizeof(int), comp(1));

cout<

[cpp] view plaincopy

#ifndef string_match_hpp_

#define string_match_hpp_

#include #include using std::string;

typedef unsigned int uint;

enum findmodes

;

typedef struct tagfindstr

findstr;

typedef findstr* lpfindstr;

class findmatchingstring : public std::unary_function

bool operator()(string& strcmp) const

return retval;

} private:

lpfindstr m_lpfs;

};

#endif /* string_match_hpp_ */

接著就是使用remove_if方法了。檔案main.cpp

[cpp] view plaincopy

#include #include #include #include #include "header/string_match.hpp"

using std::vector;

using std::string;

using std::cout;

using std::endl;

//using std::remove_if;

int main(int argc, char* argv)

cout << "]" << endl;

findstr fs;

fs.imode = fm_contains;

fs.szmatchstr = "alice";

vs.erase(std::remove_if(vs.begin(), vs.end(), findmatchingstring(&fs)), vs.end());

cout << "after remove:\n[" ;

for (vector::iterator iter=vs.begin();iter!=vs.end();iter++)

cout << "]" << endl;

return 0;

}

STL 函式物件

一 函式物件 functor stl中提供了一元和二元函式的兩種functor,通過unary function和binary function提供了這兩種不同引數數量的functor的基本結構,在這兩個型別中,分別內嵌定義一元和二元函式操作在模版推演的時候需要用到的typedef.一元函式的定義為...

STL 函式物件

4.1函式物件 4.1.1函式物件概念 過載函式呼叫操作符的類,其物件常稱為函式物件 函式物件使用過載的 時,行為類似函式呼叫,也叫仿函式 本質 函式物件 仿函式 是乙個類,不是函式 函式物件使用 特點 函式物件在使用時,可以像普通函式那樣呼叫,可以有引數,可以有返回值 函式物件超出普通函式概念,函...

STL 學習筆記 之 函式物件

c stl,三大核心元件 containers,iterators以及algorithms,即容器,迭代器和演算法。另外還一種重要元件,即函式物件 functionobject r 函式物件又稱為仿函式 functor 函式物件其實就是乙個行為類似函式的 東西 它可以沒有引數,也可以帶有若干引數,其...