标题:C++标准库算法从小到大排序,sort( s.begin(),s.end(),isShorter )为什么没 ...
只看楼主
令狐少侠56
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:320
专家分:175
注 册:2014-4-10
结帖率:58.18%
已结贴  问题点数:40 回复次数:2 
C++标准库算法从小到大排序,sort( s.begin(),s.end(),isShorter )为什么没有向isShorter函数传递参数
将字符串按照长短从小到大排序
程序代码:
bool isShorter(   const string &s1, const string &s2    )
{
    return s1.size( ) < s2.size( )  ;
}
int  main(   )
{
    vector<string>  sVec{ "the","quick","red","fox","jumps","over","the","slow","red","turtle" };
    sort(sVec.begin(), sVec.end(), isShorter );
    for (vector<string>::iterator i = sVec.begin(); i != sVec.end(); ++i) {
        cout << *i << "  ";
    }cout << endl;

    return 0;
}

C++标准库算法从小到大排序,sort( s.begin(),s.end(),isShorter )为什么没有向isShorter函数传递参数。
搜索更多相关主题的帖子: 字符串 
2016-11-04 10:18
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:40 
为什么没有向isShorter函数传递参数。
------ 你有什么证据能证明“没有向isShorter函数传递参数”
2016-11-04 10:34
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
这个代码能看懂吗?原理是一模一样的

程序代码:
#include <stdio.h>

bool isShorter( const int& a, const int& b )
{
    return a < b;
}

void sort( int& a, int& b, bool (*comp)(const int&, const int& b) )
{
    if( comp(a,b) )
        return;

    int temp = a;
    a = b;
    b = temp;
}

int  main( void )
{
    int x[] = { 1, 2 };
    sort( x[0], x[1], isShorter );
    printf( "%d %d\n", x[0], x[1] );

    int y[] = { 2, 1 };
    sort( y[0], y[1], isShorter );
    printf( "%d %d\n", y[0], y[1] );

    return 0;
}

2016-11-04 10:42



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-470689-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.192049 second(s), 7 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved