stl 的find_if演算法用來查詢容器內的符合條件的元素
阿新 • • 發佈:2019-02-20
2. 第二種方式 :使用
最後是呼叫find_if演算法: 先包含標頭檔案:
這個例子也是先找到第一個符合條件的元素,然後再將其刪除出容器。
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);
}
這個例子也是先找到第一個符合條件的元素,然後再將其刪除出容器。