STL

算法

谓词的用法predicate

【例】

bool str_cmp(const string a, const string b)
{
    string ab,ba;
    ab = a+b;
    ba = b+a;

    return ab < ba;
}

vector<string> v;
sort(v.begin(), v.end(),str_cmp);

以容器中的每个数作为传入参数,去检查str_cmp是否为真,
例如上例中给定一个序列:32 289 31三个字符串
先检查前两个,用str_cmp(32,289)检查,如果返回为真,那么32排在289的前面,否则反之。此例中第一步后的容器中元素情况为:289 32 31
然后继续后两个的检查,即str_cmp(32, 31),因为3231 > 3132,返回为假,那么传入的参数b在a的前面。
【总结】
对于传入两个参数的谓词函数,bool perd(T &a, T &b) 容器中的每个元素以两个元素作为参数传入到谓词函数中,如果谓词函数返回为真,那么将a排在前,否则b排在前。

你可能感兴趣的:(STL)