| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3117 人关注过本帖
标题:关于向算法传递函数的问题
取消只看楼主 加入收藏
哒哒哒啦啦啦
Rank: 1
等 级:新手上路
帖 子:75
专家分:4
注 册:2016-2-26
结帖率:76.92%
收藏
已结贴  问题点数:20 回复次数:1 
关于向算法传递函数的问题
程序是没错的目前,目的是选出比输入的长度“n”长的string,就是有一个之前的报错不太明白。。

#include <iostream>
#include <string>
#include <vector>
#include<stack>
#include<algorithm>
using std::string;
using std::cout;
using std::cin;
using std::endl;
using std::vector;
int main()
{
    std::vector<std::string> v
    {
        "1234","1234","1234","hi~", "alan", "alan", "cp"
    };


    string::size_type n = 4;
    vector<string> b( v.size());
    stable_sort(v.begin(), v.end(), [](string const a, string const b) {return a.size() <b.size(); });


    //**********上面这句是想排序用的,但是按照这行注解的这种写法总是报错:项不会计算为接受2个参数的函数,
    //我知道这种排序的算法肯定不对,但是语法应该没错,不知为何会这么报错呢,还是就是因为算法不对就这么报,不知大神们明白我的意思吗。。   
    //         stable_sort(v.begin(), v.end(), [n](string const a) {return a.size() >= n; });
   
   
   
    for (auto i : v)
        cout << i << " ";
    cout << endl;
    auto ptr = unique(v.begin(), v.end());
    v.erase(ptr, v.end());
 
    auto p = find_if(v.begin(), v.end(), [n](string const a) {return a.size() >=n; });
    copy(p, v.end(), b.begin());

    for (auto i : b)
        cout << i<<" ";
    std::cout << std::endl;

    return 0;
}



[此贴子已经被作者于2016-6-13 05:11编辑过]

搜索更多相关主题的帖子: include 
2016-06-13 05:09
哒哒哒啦啦啦
Rank: 1
等 级:新手上路
帖 子:75
专家分:4
注 册:2016-2-26
收藏
得分:0 
似乎明白点了,下面这句就是对的,
auto ptr=partition(v.begin(), v.end(), [n](string const a) {return a.size()<=n;});
是不是算法partition要求只能有一个参数(string const a),这句话这么写就报错
auto ptr=partition(v.begin(), v.end(), [n](string const a,string const b) {return a.size()<b.size();});
2016-06-13 05:29
快速回复:关于向算法传递函数的问题
数据加载中...
 
   



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

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