1. 程式人生 > >stl 的find_if演算法用來查詢容器內的符合條件的元素

stl 的find_if演算法用來查詢容器內的符合條件的元素

2. 第二種方式 :使用 

binary_function  和

bind2nd

如果要對自己的仿函式使用blind2nd等介面卡,必須讓自己的仿函式從binary_function繼承。

bind2nd表示繫結第2個引數,也可以用bind1st來繫結第一個引數。

 程式碼示例如下:

struct  TableCompareFuctorWithAdapter : public std::binary_function<STableInfor,STableInfor,bool>
{
public:
    TableCompareFuctorWithAdapter(){}
    ~TableCompareFuctorWithAdapter(){}
    
    bool  operator() (const STableInfor value, const STableInfor fixedValue)const
    {
        if (value.m_sTableId == fixedValue.m_sTableId) 
        {
            return true;
        }
        else
        {
            return  false;
        }
    }
};

    最後是呼叫find_if演算法:    先包含標頭檔案:
#import "algorithm"

using namespace std;
   std::vector<STableInfor>::iterator  iter_begin =  tableInforList.begin();
    std::vector<STableInfor>::iterator  iter_end = tableInforList.end();
    
    TableCompareFuctorWithAdapter  comparefuctor;
    std::vector<STableInfor>::iterator  iter_find = 
    find_if(
            iter_begin,
            iter_end, 
            std::bind2nd(comparefuctor, tableInfo.m_TableInfor)
            );

    if (iter_find != iter_end) 
    {
        tableInforList.erase(iter_find);
    }

   這個例子也是先找到第一個符合條件的元素,然後再將其刪除出容器。