学习map的使用的问题?

vargent777 2003-12-16 09:44:46
class TextQuery{
public:
TextQuery(){memset(this,0,sizeof(TextQuery));}
static void
filter_element(string felems){filt_elems=felems;}

void query_text();
void display_map_text();
void display_text_locations();
void doit(){
retrieve_text();
separate_words();
filter_text();
suffix_text();
strip_caps();
build_word_map();
}
private:
retrieve_text();
separate_words();
filter_text();
suffix_text();
suffix_s(string&);
strip_caps();
build_word_map();

vector<string> *lines_of_text;
text_loc *text_locations;
map<string,loc*, less<string> > *word_map;
static string filt_elems;
}

string TextQuery::filt_elems(",.;:!?");
//这里总是说[C++ Error] Unit1.cpp(57): E2141 Declaration syntax error
为什么?摘录自C++ Primer 260页
...全文
31 点赞 收藏 8
写回复
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
vargent777 2003-12-16
less是对前面两个参数string,loc*,比较吧?
diff是set里面的两个iterator的差,从她才得出赋值的内容阿?为什么去掉
还有input_set(infile),应该是读出文件的起始指针。?
回复
vargent777 2003-12-16
diff_type去掉是行了,为什么要去掉呢?
less又为什么不用呢?
回复
i_jianyong 2003-12-16
还有什么less<...>, allocator都去掉
回复
i_jianyong 2003-12-16
去掉diff_type
回复
vargent777 2003-12-16
可以得老兄,问题以解决,缺了个";"晕倒,!
但来了个新问题
void TextQuery::build_word_map()
{
word_map=new map<string,loc*,less<string> >;
typedef map<string,loc*,less<string> >::value_type value_type;
typedef set<string,less<string> >::difference_type diff_type;

set<string,less<string> > exclusion_set;

ifstream infile("exclusion_set");
if(!infile)
{
static string default_excluded_words[25]={
"the","and","but","that","then","are","been",
};
cerr<<"大不开excluded file"
<<"使用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;
/*这里出错[C++ Error] Unit1.cpp(219): E2285 Could not find a match //for 'istream_iterator<string,unsignedint,char_traits<unsigned int>,int>::istream_iterator(ifstream)'*/
copy(input_set,eos,inserter(exclusion_set,exclusion_set.begin()));
}
这段程序是把数据读进set
回复
i_jianyong 2003-12-16
看不出问题在哪里,在VC7.1下没问题
回复
hanyixin 2003-12-16

string TextQuery::filt_elems(",.;:!?");

前面的string是什么意思?不能这样用的。
回复
vargent777 2003-12-16
前面已用using namespace std,程序在BCB5下编译?是不是编译器问题,怎么改来避免这个问题
回复
发动态
发帖子
工具平台和程序库
创建于2007-09-28

2.4w+

社区成员

C/C++ 工具平台和程序库
申请成为版主
社区公告
暂无公告