c++stl-generate_n generate使用的问题,

问题描述

generate_n generate使用的问题,

#include
#include
#include
#include
using namespace std;
class IntSequence
{
private:
int value;
public:
IntSequence(int initialValue):value(initialValue){cout<<"a new object!"<
int operator()(){return ++value;}
};
int main()
{
listcoll;
generate_n(back_inserter(coll),9,IntSequence(1));
copy(coll.begin(),coll.end(),ostream_iterator(cout," "));cout<<endl;

generate(++coll.begin(),--coll.end(),IntSequence(42));
copy(coll.begin(),coll.end(),ostream_iterator<int>(cout," "));cout<<endl;
while(1);

}

为什么最后输出的只有一个"a new object!"
我的理解是输出9次,每次循环产生一个IntSequence(1)的临时变量。
而实际产生了一个对象,求解为什么。

解决方案

STL generate和generate_n的使用
generate_n
STL 之generate和generate_n

时间: 2025-01-19 15:07:05

c++stl-generate_n generate使用的问题,的相关文章

Lambda 表达式语法

本主题介绍 lambda 表达式的语法. 它演示提供 lambda 表达式的结构元素的示例,这些元素与示例. Lambda 表达式语法 下面用于定义显示语法,ISO C++11 从标准,lambda 表达式 (项标记下标 选择 是可选的):          lambda-introducer lambda-declarator 选择 compound-statement 进一步失败的组件这些语法如下: lambda-introducer:          [ lambda-capture 选

An Introductory STL tutorial

Introduction STL provides a template based set of collection classes, and methods for working on those collections. The collection classes give the developer access to fast and efficient collections. While the methods, which are known as the algorith

STL中Algorithm

来源:没有代码的日子 toupper,tolower地球人都知道 C++ 的 string 没有 toupper ,好在这不是个大问题,因为我们有 STL 算法: string s("heLLo");transform(s.begin(), s.end(), s.begin(), ::toupper);cout << s << endl;transform(s.begin(), s.end(), s.begin(), ::tolower);cout <&l

STL学习小结 .

from:http://blog.csdn.net/byxdaz/article/details/4633826#comments STL就是Standard Template Library,标准模板库.这可能是一个历史上最令人兴奋的工具的最无聊的术语.从根本上说,STL是一些"容器"的集合,这些"容器"有list, vector,set,map等,STL也是算法和其它一些组件的集合.这里的"容器"和算法的集合指的是世界上很多聪明人很多年的杰作

C++ STL

C++ STL 基础 C++的类.请读下面一段代码: class Shape { private: int x_pos; int y_pos; int color; public: Shape() : x_pos(0), y_pos(0), color(1) {} Shape(int x, int y, int c = 1) : x_pos(x), y_pos(y), color(c) {} Shape(const Shape& s) : x_pos(s.x_pos), y_pos(s.y_po

STL之一:字符串用法详解

    字符串是程序设计中最复杂的变成内容之一.STL string类提供了强大的功能,使得许多繁琐的编程内容用简单的语句就可完成.string字符串类减少了C语言编程中三种最常见且最具破坏性的错误:超越数组边界:通过违背初始化或被赋以错误值的指针来访问数组元素:以及在释放了某一数组原先所分配的存储单元后仍保留了"悬挂"指针.     string类的函数主要有:      Member functions (constructor) Construct string object (

STL——字符串用法详解

      字符串是程序设计中最复杂的变成内容之一.STL string类提供了强大的功能,使得许多繁琐的编程内容用简单的语句就可完成.string字符串类减少了C语言编程中三种最常见且最具破坏性的错误:超越数组边界:通过违背初始化或被赋以错误值的指针来访问数组元素:以及在释放了某一数组原先所分配的存储单元后仍保留了"悬挂"指针. string类的函数主要有:      Member functions (constructor) Construct string object (pu

浅析STL中的常用算法_C 语言

一.非变异算法 是一组不破坏操作数据的模板函数,用来对序列数据进行逐个处理.元素查找.子序列搜索.统计和匹配.非变异算法具有极为广泛的适用性,基本上可应用与各种容器. 1查找容器元素find 它用于查找等于某值的元素.它在迭代器区间[first,last)(闭开区间)上查找等于value值的元素,如果迭代器i所指的元素满足*i=value,则返回迭代器i:未找到满足条件的元素,返回last.函数原型:find( v1.begin(), v1.end(), num_to_find ); 复制代码

STL排序算法

  STL中有多种排序算法,各有各的适用范围,下面听我一一道来: I.完全排序 sort() 首先要隆重推出的当然是最最常用的sort了,sort有两种形式,第一种形式有两个迭代器参数,构成一个前开后闭的区间,按照元素的 less 关系排序:第二种形式多加一个指定排序准则的谓词.sort基本是最通用的排序函数,它使用快速排序算法,并且在递归过程中,当元素数目小于一个阈值(一般是16,我的试验是24)时,转成直接插入排序.伟大的数学家Knuth已经证明,在平均意义上,快速排序是最快的了:当然,最坏