帮忙看看啊,谢谢
#include<iostream>#include<vector>
#include<list>
#include<algorithm>
#include<iterator>
#include<string>
using namespace std;
class lei
{
private:
string str1;
string str2;
public:
void set_str1(string s)
{
if(!s.empty())
str1=s;
else
str1="";
}
void set_str2(string s)
{
if(!s.empty())
str2=s;
else
str2="";
}
string get_str1()
{
return this->str1;
}
void show()
{
cout<<str1<<'\t'<<str2<<endl;
}
};
/*
int main()
{
list<lei> ls;
const int N=5;
string a;
lei b;
vector<lei> vec;
int i;
for(i=0;i<N;i++)
{
cout<<"input string str1"<<endl;
cin>>a;
b.set_str1(a);
cout<<"input string str2"<<endl;
cin>>a;
b.set_str2(a);
vec.push_back(b);
}
vector<lei>::iterator it_v=vec.begin();
vector<lei>::iterator it_end=vec.end();
for(;it_v!=it_end;++it_v)
{
if(!ls.size())
ls.push_back(*it_v);
else
{
list<lei>::iterator it=ls.begin();
list<lei>::iterator iter=ls.end();
list<lei>::iterator it2=ls.end();
it2--;
if(it_v->get_str1().c_str()<it->get_str1().c_str())
ls.push_front(*it_v);
else if(it_v->get_str1().c_str()>it2->get_str1().c_str())
ls.push_back(*it_v);
else
{
for(it=ls.begin();it!=iter;++it)
{
if(it_v->get_str1().c_str()<it->get_str1().c_str())
{
ls.insert(it,*it_v);
break;
}
}
}
}
}
list<lei>::iterator it=ls.begin();
list<lei>::iterator iter=ls.end();
for(;it!=iter;++it)
(*it).show();
cout<<endl;
system("pause");
return 0;
}
*/
int main()
{
list<lei> ls;
const int N=5;
string a;
lei b;
vector<lei> vec;
int i;
for(i=0;i<N;i++)
{
cout<<"input string str1"<<endl;
cin>>a;
b.set_str1(a);
cout<<"input string str2"<<endl;
cin>>a;
b.set_str2(a);
vec.push_back(b);
}
vector<lei>::iterator it_v=vec.begin();
vector<lei>::iterator it_end=vec.end();
for(;it_v!=it_end;++it_v)
{
if(!ls.size())
ls.push_back(*it_v);
else
{
list<lei>::iterator it=ls.begin();
list<lei>::iterator iter=ls.end();
list<lei>::iterator it2=ls.end();
it2--;
if(it_v->get_str1()<it->get_str1())
ls.push_front(*it_v);
else if(it_v->get_str1()>it2->get_str1())
ls.push_back(*it_v);
else
{
for(it=ls.begin();it!=iter;++it)
{
if(it_v->get_str1()<it->get_str1())
{
ls.insert(it,*it_v);
break;
}
}
}
}
}
list<lei>::iterator it=ls.begin();
list<lei>::iterator iter=ls.end();
for(;it!=iter;++it)
(*it).show();
cout<<endl;
system("pause");
return 0;
}
里面有两个main()函数,注释掉的那个是有问题的,输入的字符串无法按照升序的顺序排列输出,而下边的那个则可以,问题是string还要不要转换成char型进行比较,转换成char型,排序输出就是错的,不进行转换直接按string类型比较结果就是正确的