STL标准库容器函数对象简单实用

知识点:

1、标准库函数对象:标准库定义了一组表示算术运算符、关系运算符和逻辑运算符的类,每个类分别定义了一个执行命名操作的调用运算符。这些类都被定义成模版的形式,我们可以为指定具体的应用类型

STL标准库容器函数对象简单实用_第1张图片

2、函数适配器:bind1st、bind2nd 把二元函数转为一元函数,以便算法调用

3、标准库部分算法函数 count_if、find_if、transform 的使用

示例代码:

#include 
#include 
#include 
#include 
#include 

using namespace std;

int main()
{
    //find greater than 4
    vector ivec{ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
    int number = count_if( ivec.begin(), ivec.end(), bind2nd( greater(), 4 ) );
    cout << "greater 5 number:" << number << endl;
    //less than 4
    int number2 = count_if( ivec.begin(), ivec.end(), bind1st( greater(), 4 ) );
    cout << "greater 5 number:" << number2 << endl;

    //find string not biu
    vector svec{ "biu", "lalala", "biu", "biu", "biu" };
    auto iter = find_if( svec.begin(), svec.end(), bind2nd( not_equal_to(), "biu" ) );
    cout << "not equal biu string is:" << *iter << endl;

    //all number multiple 2
    vector ivec2( 10, 2 );

    for( auto i : ivec2 )
    {
        cout << i << " ";
    }

    cout << endl;
    transform( ivec2.begin(), ivec2.end(), ivec2.begin(), bind2nd( multiplies(), 2 ) );

    for( auto i : ivec2 )
    {
        cout << i << " ";
    }

    cout << endl;
    system( "pause" );
    return 0;
}

执行结果:

STL标准库容器函数对象简单实用_第2张图片

你可能感兴趣的:(c++,STL用法总结)