| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 446 人关注过本帖
标题:请高手帮忙看下这个程序,哪里出错了啊????谢谢
只看楼主 加入收藏
crazyer1986
Rank: 1
等 级:新手上路
帖 子:5
专家分:1
注 册:2010-11-4
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:7 
请高手帮忙看下这个程序,哪里出错了啊????谢谢

我想显示剩下的没有删除的作者名字和作品,以一个作者名字跟着一个作品的形式显示,可是下面的程序只显示作者名字,作品却显示不出来,请高手帮忙,在此谢过。
#include <iostream>
#include <map>
#include <string>
#include <vector>
using namespace std;

int main()
{
    map<string,vector<string> > authors;
    string author,works,searchItem;
do
{
    cout<<"Enter author name (Ctrl+Z to end):"<<endl;
    cin>>author;
    if(!cin)
        break;
    vector<string> work;
    cout<<"Enter suthor's works(ctrl+z to end):"<<endl;
    while (cin>>works)
        authors.insert (make_pair(author,work));
    cin.clear ();
}while (cin);
cin.clear();
cout<<"Who is the author that you want erase:"<<endl;
cin>>searchItem;
map<string,vector<string> >::iterator iter=authors.find(searchItem);
if(iter==authors.end())

    cout<<"Can't find this author"<<endl;

else
    authors.erase(searchItem);

    cout<<"author\t\twork:"<<endl;
    for(iter=authors.begin();iter!=authors.end();++iter)        
        for(vector<string>::iterator vect=iter->second.begin(); vect!=iter->second.end();vect++)  
        cout<<iter->first<<"\t\t"<<*vect<<endl;
    return 0;
}
搜索更多相关主题的帖子: 名字 
2011-03-03 22:15
qq1023569223
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:湖南科技大学
等 级:贵宾
威 望:26
帖 子:2753
专家分:13404
注 册:2010-12-22
收藏
得分:0 
什么东西写的?正则表达式么?看不懂!

   唯实惟新 至诚致志
2011-03-04 09:01
ciweitou163
Rank: 7Rank: 7Rank: 7
来 自:河北 石家庄
等 级:黑侠
威 望:1
帖 子:144
专家分:528
注 册:2008-10-4
收藏
得分:10 
程序代码:
#include <iostream>
#include <map>
#include <string>
#include <vector>
using namespace std;

int main()
{
    map<string,string > authors;
    string author,works,searchItem;
    do
    {
        cout<<"Enter author name (Ctrl+Z to end):"<<endl;
        cin>>author;
        if(!cin)
            break;
        //vector<string> work;
        cout<<"Enter suthor's works(ctrl+z to end):"<<endl;
        cin>>works;
        authors.insert (make_pair(author,works));
        //cin.clear ();
    }while (cin);

    cin.clear();
    cout<<"Who is the author that you want erase:"<<endl;

    cin>>searchItem;

    map<string,string >::iterator iter=authors.find(searchItem);
    if(iter==authors.end())

        cout<<"Can't find this author"<<endl;

    else
        authors.erase(searchItem);

    cout<<"author\t\twork:"<<endl;
    for(iter=authors.begin();iter!=authors.end();++iter)        
        //for(vector<string>::iterator vect=iter->second.begin(); vect!=iter->second.end();vect++)  
        cout<<iter->first<<"\t\t"<<iter->second<<endl;
    return 0;
}


  • 满眼生机转化钧;天工人巧日争新。
2011-03-04 11:05
crazyer1986
Rank: 1
等 级:新手上路
帖 子:5
专家分:1
注 册:2010-11-4
收藏
得分:0 
回复 3楼 ciweitou163
谢谢您的程序,实现了一个作者跟着一个作品的效果,如果我想实现一个作者有多不作品的话,也就是说map容器的值是vector容器,在原来程序的基础上应该如何实现输出呢?还请不吝赐教。
输出形式例如:
路遥        平凡的世界
路遥        人生
路遥        落叶在秋风中飘落
请指教,谢谢。
2011-03-04 14:05
crazyer1986
Rank: 1
等 级:新手上路
帖 子:5
专家分:1
注 册:2010-11-4
收藏
得分:0 
回复 2楼 qq1023569223
自己在C++ Primer中看到的一个程序题,改了一下,呵呵
2011-03-04 14:17
玩出来的代码
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:河南新乡
等 级:贵宾
威 望:11
帖 子:742
专家分:2989
注 册:2009-10-12
收藏
得分:10 
while (cin>>works)
        authors.insert (make_pair(author,work));    // 在你原先的程序上改一句authors[author].push_back(works); OK.

离恨恰如春草,更行更远还生。
2011-03-04 14:46
crazyer1986
Rank: 1
等 级:新手上路
帖 子:5
专家分:1
注 册:2010-11-4
收藏
得分:0 
回复 6楼 玩出来的代码
不胜感激,问题解决了,多谢赐教。呵呵
2011-03-04 15:04
ciweitou163
Rank: 7Rank: 7Rank: 7
来 自:河北 石家庄
等 级:黑侠
威 望:1
帖 子:144
专家分:528
注 册:2008-10-4
收藏
得分:0 
while (cin>>works)
        authors.insert (make_pair(author,work));

没有把works添加到work中。


  • 满眼生机转化钧;天工人巧日争新。
2011-03-04 15:27
快速回复:请高手帮忙看下这个程序,哪里出错了啊????谢谢
数据加载中...
 
   



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

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