python中的range功能非常好用

for i in range(100):
print(i)

现在利用C++11的基于范围的for循环特性实现C++中的range功能

class range
{
public:
range(int end)
{
_begin = 0;
_end = end;
_step = 1;
}
range(int begin, int end, int step=1)
{
_begin = begin;
_end = end;
_step = step;
if (!_step) // 步长为0, 设为默认值1
_step = 1;
} class iterator
{
public:
iterator(int x, int s=1)
{
n = x;
step = s;
} iterator &operator++()
{
n += step;
return *this;
} bool operator!=(const iterator &x)
{
return (step>0)? n<x.n : n>x.n;
} int &operator*()
{
return n;
} private:
int n, step;
}; iterator begin()
{
return iterator(_begin, _step);
}
iterator end()
{
return iterator(_end, _step);
} private:
int _begin, _end, _step;
};

例:

for(auto i: range(10))
std::cout << i << std::endl; for(auto i: range(10, 100))
std::cout << i << std::endl; for(auto i: range(10, 100, 2))
std::cout << i << std::endl; for(auto i: range(100, 10, -2))
std::cout << i << std::endl;

C++11中自定义range的更多相关文章

  1. C++11新特性——range for

    很多编程语言都有range for语法功能,自C++11起,终于将这个重要功能加入C++标准中.range for语句,可以方便的遍历给定序列中的每个元素并对其执行某种操作. 1.基本语法 for(d ...

  2. python开发_python中的range()函数

    python中的range()函数的功能hen强大,所以我觉得很有必要和大家分享一下 就好像其API中所描述的: If you do need to iterate over a sequence o ...

  3. C++11中对类(class)新增的特性

    C++11中对类(class)新增的特性 default/delete 控制默认函数 在我们没有显式定义类的复制构造函数和赋值操作符的情况下,编译器会为我们生成默认的这两个函数: 默认的赋值函数以内存 ...

  4. SharePoint 2013 中自定义WCF服务

    在使用SharePoint2013的时候,如果其他客户端 API 的组合不足,可以通过自定义 Web 服务扩展 SharePoint.默认情况下,SharePoint 2013 不仅支持创建自定义 A ...

  5. 在WPF中自定义你的绘制(四)

    原文:在WPF中自定义你的绘制(四)                                   在WPF中自定义你的绘制(四)                                 ...

  6. C++11 中值得关注的几大变化(网摘)

    C++11 中值得关注的几大变化(详解) 原文出处:[陈皓 coolshell] 源文章来自前C++标准委员会的 Danny Kalev 的 The Biggest Changes in C++11 ...

  7. C++11 中值得关注的几大变化(详解)

    源文章来自前C++标准委员会的 Danny Kalev 的 The Biggest Changes in C++11 (and Why You Should Care),赖勇浩做了一个中文翻译在这里. ...

  8. 正则表达式简介及在C++11中的简单使用

    正则表达式(regular expression)是计算机科学中的一个概念,又称规则表达式,通常简写为regex.regexp.RE.regexps.regexes.regexen. 正则表达式是一种 ...

  9. C++11中的raw string literals

    作为一名C++书看得少得可怜的新手,我一直没有勇气去系统地学习一下C++ 11添加的新特性.不过,平日里逛论坛,阅读大犇们的博客,倒是了解了一些.比如,这个帖子: 如何绕过g++ 4.8.1那个不能在 ...

随机推荐

  1. java 静态内部类小总结

    内部类是指在一个外部类的内部再定义一个类.内部类作为外部类的一个成员,并且依附于外部类而存在的.内部类可为静态,可用protected和private修饰(而外部类只能使用public和缺省的包访问权 ...

  2. 数组,集合分割函数,join()

    join函数定义如下: // 串联类型为 System.String 的 System.Collections.Generic.IEnumerable<T> 构造集合的成员,其中在每个成员 ...

  3. 新建structs2 web应用及structs.xml常用基础配置

    建立一个structs2 web应用程序 1. 创建一个基本的web应用程序 2. 添加structs2的jar文件到Class Path 将structs2的最小jar包拷到WEB-INF/lib目 ...

  4. docker学习(1) 安装

    docker是啥就不多讲了,简言之就是更轻量.更牛叉的新一代虚拟机技术.下面是安装步骤: 一.mac/windows平台的安装 docker是在linux内核基础上发展而来的,无法直接运行在mac/w ...

  5. [LeetCode] Two Sum 两数之和

    Given an array of integers, return indices of the two numbers such that they add up to a specific ta ...

  6. Ajax入门(一)

    最近开始学习Ajax了0.0,虽然其他的还没巩固,但既然学了就先写下来吧... Ajax的定义呢,百度吧= =...就觉得最实用的地方就是页面无刷新,但网页实现了与后台的同步更新.   1, 首先创建 ...

  7. ssh 登录慢?

    修改 /etc/ssh/sshd_config 文件中对应的配置为: GSSAPIAuthentication no UseDNS=no 修改 /etc/nsswitch.conf 文件中对应的配置为 ...

  8. Leetcode 259. 3Sum Smaller

    class Solution(object): def threeSumSmaller(self, nums, target): """ :type nums: List ...

  9. js控制Bootstrap 模态框(Modal)插件

    js控制Bootstrap 模态框(Modal)插件 http://www.cnblogs.com/zzjeny/p/5564400.html

  10. centOS7虚拟机上搭建kvm虚拟平台

    平台:win10+vmware, vmware中安装centOS7 1).  检测硬件是否支持虚拟化 # egrep '(vmx|svm)' --color=always /proc/cpuinfo ...