变位词的实现

本程序利用C++中的STL来实现,可能效率低。
#include<iostream>
#include<map>
#include<string>
#include<fstream>
#include<cassert>
#include<set>
#include<algorithm>
using namespace std;
int main()
{	
	multimap<string,string> word;
	set<string>sig;
	ifstream in("1.txt");

	assert(in);
	string s;
	while(in>>s)
	{
		string change=s;
	
		sort(change.begin(),change.end());	
		sig.insert(change);
		word.insert(make_pair(change,s));
		cout<<change<<" "<<s<<endl;

	}
	set<string>::iterator com;
	multimap<string,string>::iterator pos;
	for(pos=word.begin();pos!=word.end();pos++)
	{
		cout<<pos->first<<" "<<pos->second<<endl;
	}
	cout<<endl;
	multimap<string,string>::iterator pot;
	
	for(com=sig.begin();com!=sig.end();com++)
	{
		for(pot=word.begin();pot!=word.end();pot++)
		{
			if(*com==pot->first)
				cout<<pot->second<<" ";
		}
		cout<<endl;

	}
	return 0;

}

你可能感兴趣的:(c,String,iterator,pair)