标题:int &(vector<int>::*extract)(vector<int>::size_type);是什么意思 ...
只看楼主
花脸
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:9
帖 子:788
专家分:907
注 册:2017-1-4
结帖率:95.37%
已结贴  问题点数:20 回复次数:5 
int &(vector<int>::*extract)(vector<int>::size_type);是什么意思
程序代码:
[code]
#include <iostream>
#include <vector>
#include <map>
#include <iterator>
#include <algorithm>
#include <hash_set>
#include <functional>
using namespace std;

class Base
{
    public:
        virtual void print()=0;    
};
class B1: public Base
{
    public:
        void print()
        {
            cout<<" this is B1"<<endl;    
        }    
};
class B2: public Base
{
    public:
        void print()
        {
            cout<<" this is B2"<<endl;    
        }    
};
class Op
{
    public:
        virtual double eval(double)=0;
};
class square:public Op
{
    public:
        double eval(double x)
        {
            return x*x;    
        }    
};
class Negate:public Op
{
    public:
        double eval(double x)
        {
            return -x;    
        }    
};
int main()
{
    //mem_fun1_ref_t
    vector<int> v1{1,1,1,1,1};
    vector<int> v2{2,2,2,2,2};
    vector<int> v3{3,3,3,3,3};
    
    vector<vector<int> > v;
    v.push_back(v1);
    v.push_back(v2);
    v.push_back(v3);
    
    vector<int> v4{1,2,3};
    int &(vector<int>::*extract)(vector<int>::size_type);//1
    extract=&vector<int>::operator[];//2
    transform(v.begin(),v.end(),v4.begin(),ostream_iterator<int>(cout," "),mem_fun_ref(extract));//3
    return 0; 
}
[/code]

上边标注的1 2 3 这三行代码什么意思??求指教
搜索更多相关主题的帖子: int vector include public double 
2019-02-20 15:55
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:10 
1 定义了一个 成员函数指针
2 给它赋值。有病呀,定义时就应该初始化
3 mem_fun_ref已经被C++废弃后删除了,用lambda吧
2019-02-20 16:24
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
程序代码:
#include <iostream>
#include <vector>
#include <iterator>
#include <algorithm>
using namespace std;

int main()
{
    vector<vector<int>> v = { {0,1,2,3,4}, {5,6,7,8,9}, {10,11,12,13,14} };
    vector<int> v4 = { 1,2,3 };

    transform( v.begin(), v.end()
             , v4.begin()
             , ostream_iterator<int>(cout," ")
             , [](const auto& ve,size_t v4e){return ve[v4e];} );
    return 0;
}
2019-02-20 16:36
花脸
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:9
帖 子:788
专家分:907
注 册:2017-1-4
得分:0 
回复 3楼 rjsp
好的 谢谢。
2019-02-20 20:16
lyb661
Rank: 5Rank: 5
等 级:贵宾
威 望:18
帖 子:47
专家分:83
注 册:2018-12-12
得分:10 
泛型编程确实好难!有许多概念容易混淆。
2019-02-21 14:49
花脸
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:9
帖 子:788
专家分:907
注 册:2017-1-4
得分:0 
回复 5楼 lyb661
是啊
2019-02-24 22:13



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-493138-1-1.html




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

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