10-26
//2014-03-12-14.03
#include<iostream>
#include<set>
#include<map>
#include<vector>
#include<string>
#include<cstring>
#include<cstdlib>
#include<ctime>
using namespace std;
int main()
{
multimap<string,string> mmap;
string word2="王小", word22="天使恋人",word222="王八如何成精";
string word3="胡锡进",word33="我脸大",word333="厚脸学";
mmap.insert(make_pair(word2,word22));
mmap.insert(make_pair(word2,word222));
mmap.insert(make_pair(word3,word33));
mmap.insert(make_pair(word3,word333));
// multimap<string,string>::size_type num=mmap.erase("王小");
// cout<<num<<endl;
multimap<string,string>::iterator iter=mmap.find("王小");
cout<<iter->first<<" "<<iter->second<<endl;
if(iter!=mmap.end())
mmap.erase(iter);
// iter=mmap.find("王d小");//试验下删除不存在的键,find的返回值
// if(iter==mmap.end())cout<<"返回的是超微元素哦。。"<<endl;
return 0;
}
10-27吸取一个教训,在循环中删除容器或者链表某个元素都要放到最后,而且需要提出来
//2014-03-13-14.46
#include<iostream>
#include<set>
#include<map>
#include<vector>
#include<string>
#include<cstring>
#include<cstdlib>
#include<ctime>
using namespace std;
int main()
{
multimap<string,string> mmap;
string word2="王小", word22="天使恋人",word222="王八如何成精";
string word3="胡锡进",word33="我脸大",word333="厚脸学";
mmap.insert(make_pair(word2,word22));
mmap.insert(make_pair(word2,word222));
mmap.insert(make_pair(word3,word33));
mmap.insert(make_pair(word3,word333));
multimap<string,string>::iterator it2=mmap.begin();
it2=mmap.begin();
while(it2!=mmap.end())
{
cout<<it2->first<<"\t"<<it2->second<<endl;
++it2;
}
typedef multimap<string,string>::iterator ITER;
pair< ITER,ITER> iter=mmap.equal_range("王小");
cout<<endl;
cout<<"开始删除:"<<endl;
cout<<endl;
// while(iter.first!=iter.second)
// {
// cout<<iter.first->first<<" "<<iter.first->second<<endl;
// pair< ITER,ITER>ttt=iter;
// ++iter.first;
// mmap.erase(ttt.first);
// }
mmap.erase(iter.first,iter.second);
cout<<endl;
cout<<"删除后:"<<endl;
cout<<endl;
it2=mmap.begin();
while(it2!=mmap.end())
{
cout<<it2->first<<"\t"<<it2->second<<endl;
++it2;
}
return 0;
}
10-30额,写着好费劲。。。
#include<iostream>
#include<fstream>
#include<sstream>
#include<set>
#include<map>
#include<vector>
using namespace std;
class TextQuery
{
public:
typedef std::vector<std::string>::size_type line_no;
void read_file(std::ifstream &is)
{ store_file(is); build_map(); }
std::set<line_no> run_query(const std::string&) const;
std::string text_line(line_no) const;
private:
void store_file(std::ifstream&); // store input file
void build_map(); // associated each word with a set of line numbers
std::vector<std::string> lines_of_text;
std::map< std::string, std::set<line_no> > word_map;
};
void TextQuery::store_file(std::ifstream&fin)
{
string line;
while(getline(fin,line))lines_of_text.push_back(line);
}
void TextQuery::build_map()
{
vector<string >::iterator iter=lines_of_text.begin();
set<line_no> line;
line_no num=1;
while(iter!=lines_of_text.end())
{
string word;
istringstream is(*iter);
while(is>>word)
{
// word = cleanup_str(word);
// if(word_map.count(word)==0);//这句没想到。。。。
// {
word_map[word].insert(num);
// }
// else
// {
// if(word_map)
// word_map[word].insert(num);
// }
}
num++;
}
}
set<TextQuery::line_no>
TextQuery::run_query(const std::string&word) const
{
map<string,set<line_no> >::const_iterator iter=word_map.find(word);
if(iter==word_map.end())return set<line_no>();
else return iter->second;
}
string TextQuery::text_line(line_no n) const
{
return lines_of_text[n-1];
}
int main()
{
return 0;
}