STL仿函数以引用传递

#include<iostream>#include<list>#include<iterator>#include<algorithm>#include"print.h... #include <iostream>
#include <list>
#include <iterator>
#include <algorithm>
#include "print.h"
using namespace std;

class IntSequence
{
int value;
public:
IntSequence(int initialValue):value(initialValue){}
int operator()(){ return value++; }
};

int main()
{
list<int> col1;
IntSequence seq(1);

generate_n< back_insert_iterator<list<int> >,int,IntSequence&>(back_inserter(col1),4,seq);
PRINT_ELEMENTS(col1);

generate_n(back_inserter(col1),4,IntSequence(42));
PRINT_ELEMENTS(col1);

generate_n(back_inserter(col1),4,seq);
PRINT_ELEMENTS(col1);

generate_n(back_inserter(col1),4,seq);
PRINT_ELEMENTS(col1);
}
STL标准程序库树上的理论输出是:
1 2 3 4
1 2 3 4 42 43 44 45
1 2 3 4 42 43 44 45 5 6 7 8
1 2 3 4 42 43 44 45 5 6 7 8 5 6 7 8
但是实际输出为:
1 2 3 4
1 2 3 4 42 43 44 45
1 2 3 4 42 43 44 45 1 2 3 4
1 2 3 4 42 43 44 45 1 2 3 4 1 2 3 4
也就是说为什么仿函数以引用传递没有起效果,
展开
 我来答
志远823
2011-11-23 · TA获得超过2296个赞
知道小有建树答主
回答量:913
采纳率:66%
帮助的人:1178万
展开全部
照我说的改改
class IntSequence
{
int& value;
public:
IntSequence(int& initialValue):value(initialValue){}
int operator()(){ return value++; }
};
更多追问追答
追问
出错了,main()初始化的时候,1是不能赋给引用的
追答
PRINT_ELEMENTS的内容是啥?
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式