抛砖引玉吧,提供一个没有效率优化的示范代码
若你的编译器支持C++标准,比如gcc4.7.2,可以用如下代码
程序代码:
#include <iostream>
#include <algorithm>
#include <iterator>
#include <vector>
#include <string>
using namespace std;
int main()
{
vector<string> buf = vector<string>( istream_iterator<string>(cin), istream_iterator<string>() );
std::stable_sort( buf.begin(), buf.end(), []( const string& a, const string& b ) { return count(a.begin(),a.end(),'A') < count(b.begin(),b.end(),'A'); } );
copy( buf.begin(), buf.end(), ostream_iterator<string>(cout,"\n") );
return 0;
}
若你的编译器对C++标准支持不那么好,比如VC++9.0,可以将 lambda函数 改为 函数对象,代码如下
程序代码:
#include <iostream>
#include <algorithm>
#include <iterator>
#include <vector>
#include <string>
using namespace std;
struct foo {
bool operator()( const string& a, const string& b ) const {
return count(a.begin(),a.end(),'A') < count(b.begin(),b.end(),'A');
}
};
int main()
{
vector<string> buf = vector<string>( istream_iterator<string>(cin), istream_iterator<string>() );
std::stable_sort( buf.begin(), buf.end(), foo() );
copy( buf.begin(), buf.end(), ostream_iterator<string>(cout,"\n") );
return 0;
}