請高手賜教
怎樣改寫才可以使得程序可以檢測多次出現的相同編號,并且对这个行編號只插入一次#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>
#include <string>
#include <map>
#include <cctype>
using namespace std;
vector<string> split(const string&s) //分割單詞
{
vector<string> ret;
typedef string::size_type string_size;
string_size i=0;
while(i!=s.size()){
while(i!=s.size() && isspace(s[i]))
++i;
string_size j=i;
while(j!=s.size() && !isspace(s[j]))
++j;
if(i!=j){
ret.push_back(s.substr(i,j-i));
i=j;
}
}
return ret;
}
map<string,vector<int> > xref(istream& in,vector<string> find_words(const string&)=split)
{
string line;
int line_number=0;
map<string,vector<int> > ret;
int i=0;
while(getline(in,line)){
++line_number;
vector<string> words=find_words(line);
for(vector<string>::const_iterator it=words.begin();it!=words.end();++it){
ret[*it].push_back(line_number);
}
}
return ret;
}
int main()
{
map<string, vector<int> > ret=xref(cin);
for(map<string,vector<int> >::const_iterator it=ret.begin();it!=ret.end();++it){
cout<<it->first<<" occurs on line(s): ";
vector<int>::const_iterator line_it=it->second.begin();
cout<<*line_it;
++line_it;
while(line_it!=it->second.end()){
cout<<", "<<*line_it;
++line_it;
}
cout<<endl;
}
return 0;
}
要在xref函数內修改...但我修改後以致程序不能运行,我是將原來容器words內相同的單詞只取一个放进新設的容器中...
这样就不会有相同編號,,,,,但如果在main函数內修改..我想不出用什么方法可以將輸出編號不会有重複的出來