锘??xml version="1.0" encoding="utf-8" standalone="yes"?> 綾諱腑瀹氫箟甯擱噺錛歴tatic const int numturns = 5; 榪欐槸澹版槑寮忚岄潪瀹氫箟寮忋傝嫢涓嶉渶鍙栧畠浠殑鍦板潃錛屾棤欏繪彁渚涘畾涔夊紡銆傚畾涔夊紡濡備笅錛?/p> const int GamePlayer::NumTurns; 涓涓猚lass闇瑕佸父閲忓鹼紝瀹氫箟濡備笅錛?/p> enum{NumTurns = 5}; int scores[NumTurns]; 鍏充簬“褰技鍑芥暟鐨勫畯錛屾渶濂芥敼鐢╥nline鍑芥暟鏇挎崲#defines” 浣嗭紝緇忛獙璇佹槑銆傚畯鐨勯熷害瑕佹瘮鐢╥nline鐨勬柟娉曞揩銆?/p> 鍦ㄤ竴浜涘閫熷害瑕佹眰闈炲父涓ユ牸鐨勯」鐩腑錛岃繖涓柟闈㈣繕鏄鏈夋墍鍙栬垗鐨勩?/p>
#include <string>
#include <algorithm>
#include <iterator>
#include <iostream.h>
// #include <iostream>
class GreaterThan {
public:
GreaterThan( int size = 6 ) : _size( size ){}
int size() { return _size; }
bool operator()(const string & s1) {
return s1.size() > 6;
}
private:
int _size;
};
template <class Type>
class PrintElem {
public:
void operator()( const Type &elem )
{
++_cnt;
if ( _cnt % 8 == 0 ) { cout << endl; }
cout << elem << " ";
}
private:
static int _cnt;
};
template < class Type >
int PrintElem<Type>::_cnt = 0;
class LessThan {
public:
bool operator()(const string & s1, const string & s2 ) {
return s1.size() < s2.size();
}
};
typedef vector<string, allocator> textwords;
void process_vocab( vector<textwords, allocator> *pvec )
{
if ( ! pvec )
// issue warning message
return;
vector< string, allocator > texts;
vector<textwords, allocator>::iterator iter = pvec->begin();
for ( ; iter != pvec->end(); ++iter )
copy( (*iter).begin(), (*iter).end(), back_inserter( texts ));
// sort the elements of texts
sort( texts.begin(), texts.end() );
for_each( texts.begin(), texts.end(), PrintElem<string>() );
cout << endl << endl;
// delete all duplicate elements
vector<string, allocator>::iterator it;
it = unique( texts.begin(), texts.end() );
texts.erase( it, texts.end() );
for_each( texts.begin(), texts.end(), PrintElem<string>() );
cout << endl << endl;
stable_sort( texts.begin(), texts.end(), LessThan() );
for_each( texts.begin(), texts.end(), PrintElem<string>() );
cout << endl << endl;
// count number of strings greater than length 6
int cnt = 0;
// obsolete form of count -- standard changes this
count_if( texts.begin(), texts.end(), GreaterThan(), cnt );
cout << "Number of words greater than length six are "
<< cnt << endl;
// 
static string rw[] = { "and", "if", "or", "but", "the" };
vector<string,allocator> remove_words( rw, rw+5 );
vector<string, allocator>::iterator it2 = remove_words.begin();
for ( ; it2 != remove_words.end(); ++it2 ) {
int cnt = 0;
// obsolete form of count -- standard changes this
count( texts.begin(), texts.end(), *it2, cnt );
cout << cnt << " instances removed: "
<< (*it2) << endl;
texts.erase(
remove(texts.begin(),texts.end(),*it2),
texts.end()
);
}
cout << endl << endl;
for_each( texts.begin(), texts.end(), PrintElem<string>() );
}
typedef vector<string,allocator>::difference_type diff_type;
#include <fstream.h>
main()
{
vector<textwords, allocator> sample;
vector<string,allocator> t1, t2;
string t1fn, t2fn;
cout << "text file #1: "; cin >> t1fn;
cout << "text file #2: "; cin >> t2fn;
ifstream infile1( t1fn.c_str());
ifstream infile2( t2fn.c_str());
istream_iterator< string, diff_type > input_set1( infile1 ), eos;
istream_iterator< string, diff_type > input_set2( infile2 );
copy( input_set1, eos, back_inserter( t1 ));
copy( input_set2, eos, back_inserter( t2 ));
sample.push_back( t1 ); sample.push_back( t2 );
process_vocab( &sample );
}
]]>