| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 551 人关注过本帖
标题:transform函数问题,求解答
只看楼主 加入收藏
纪老猴子
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2014-4-13
结帖率:83.33%
收藏
已结贴  问题点数:2 回复次数:1 
transform函数问题,求解答
程序代码:
#include <iostream>
#include <string>
#include <cstdlib>
#include <vector>
#include <set>
#include <map>
#include <iterator>
#include <algorithm>
#include <cctype>

using namespace std;

char ToLower (char ch)
{
    return tolower (ch);
}

string & ToLower (string & st);
void Display (const string & s);

int main ()
{
    vector<string> words;
    vector<string> temps;

    string temp;

    cout << "Enter words (enter quit to quit) : " << endl;

    //输入单词,输入quit退出输入,将输入的单词插入到vector容器中;
    while (cin >> temp && temp != "quit")
    {
        words.push_back (temp);
    }

    //使用算法for_each ()来显示vector容器中的内容;
    cout << "Now show the words you just entered : " << endl;
    for_each (words.begin (),words.end (),Display);
    cout << endl;

    //使用transform方法,对每个vector容器中的元素进行ToLower ()函数 并插入到set集合中
    set<string> wordset;
    temps.resize (words.size ());
    transform (words.begin (),words.end (),temps.begin (),ToLower);//代码来自c++ primer plus,此条无法编译通过。
    vector<string>::iterator it;
    for (it = words.begin ();it != words.end ();it ++)
    {
        wordset.insert (*it);
    }

    //使用算法for_each()输出集合中每个元素;
    cout << "Alphabetic list of words : " << endl;
    for_each (wordset.begin (),wordset.end (),Display);
    cout << endl;

    //将set容器中的元素复制到map关联容器中;
    map<string,int> wordmap;
    set<string>::iterator iter1;
    for (iter1 = wordset.begin ();iter1 != wordset.end ();iter1 ++)
    {
        wordmap.insert (pair <string,int> (*iter1,count (words.begin (),words.end (),*iter1)));
    }

    //统计单词出现次数;
    for (iter1 = wordset.begin ();iter1 != wordset.end ();iter1 ++)
    {
        wordmap[*iter1] = count (words.begin (),words.end (),*iter1);
    }

    //显示各个单词的出现频率;
    for (iter1 = wordset.begin ();iter1 != wordset.end ();iter1 ++)
    {
        cout << *iter1 << " " << wordmap[*iter1] << endl;
    }

    system ("pause");
    return 0;
    
}

string & ToLower (string & st)
{
    transform (st.begin (),st.end (),st.begin (),tolower);
    return st;
}

void Display (const string & s)
{
    cout << s << " " ;
}


求大神解释一下
搜索更多相关主题的帖子: color 
2015-03-26 19:45
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9031
专家分:54061
注 册:2011-1-18
收藏
得分:2 

char ToLower (char ch)
{
    return tolower (ch);
}
删除掉

或者transform的最后一个模板参数明确给出用 string & ToLower (string & st) 而不是 char ToLower (char ch)
2015-03-27 08:59
快速回复:transform函数问题,求解答
数据加载中...
 
   



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

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