这里举例说明如何用set。
原例子:
typedef set< string >::difference_type diff_type;
set< string > exclusion_set;
ifstream infile( "exclusion_set" );
if ( ! infile )
{
static string default_excluded_words[25] = {
"the","and","but","that","then","are","been",
"can","can't","cannot","could","did","for",
"had","have","him","his","her","its","into",
"were","which","when","with","would"
};
cerr << "warning! unable to open word exclusion file! -- "
<< "using default set\n";
copy( default_excluded_words, default_excluded_words+25,
inserter( exclusion_set, exclusion_set.begin() ));
}
else
{
istream_iterator\string,diff_type> input_set(infile),eos;
copy( input_set, eos, inserter( exclusion_set,
exclusion_set.begin() ));
}
我用stlport后发现有问题,见红色字样。
我查看了英文发现,原文也是这样?
我修正为:
typedef set< string >::difference_type diff_type;
set< string > exclusion_set;
ifstream infile( "exclusion_set" );
if ( ! infile )
{
static string default_excluded_words[25] = {
"the","and","but","that","then","are","been",
"can","can't","cannot","could","did","for",
"had","have","him","his","her","its","into",
"were","which","when","with","would"
};
cout << "warning! unable to open word exclusion file! -- "
<< "using default set\n";
copy( default_excluded_words, default_excluded_words+25,
inserter( exclusion_set, exclusion_set.begin() ));
}
else
{
istream_iterator<string> input_set(infile),eos;
copy( input_set, eos, inserter( exclusion_set,
exclusion_set.begin() ));
}
for(set< string >::iterator it=exclusion_set.begin(); it!=exclusion_set.end(); ++it)
{
cout<<"Set item is "<<*it<<"\n";
}
疑问:
为什么要用到 typedef set< string >::difference_type diff_type???
注意:
还要用到的头文件为:
#include <stlport/algorithm>
#include <stlport/fstream>
#include <stlport/iterator>
#include <stlport/set>