| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 526 人关注过本帖
标题:帮忙看看啊,谢谢
取消只看楼主 加入收藏
lianjiecuowu
Rank: 3Rank: 3
来 自:安徽
等 级:论坛游侠
帖 子:152
专家分:107
注 册:2011-5-20
结帖率:85.71%
收藏
已结贴  问题点数:20 回复次数:0 
帮忙看看啊,谢谢
#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类型比较结果就是正确的
搜索更多相关主题的帖子: void class private include public 
2011-07-01 11:34
快速回复:帮忙看看啊,谢谢
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012275 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved