学习 c++11 之 foreach

作者: | 更新日期:

快来学习c++新功能 foreach 吧。

本文首发于公众号:天空的代码世界,微信号:tiankonguse

零、背景

经常看我文章的朋友有些知道,我工作上使用的是 C++ 语言,但是编译版本多年来一直都是 98 版本的。

今年,2019年,我们在推动切换到 c++11 了,奔走相告。

从 c98 切换到 c++11 ,跨越了 13 年的技术,语法产生了巨大的差异。

所以我打算分一个系列来介绍常见的 c++11 的语法。

第一个知识点我在比赛中经常用到,就是遍历 STL 容器的 foreach 。

一、旧的循环

以前的时候,我们遍历 STL 都需要迭代器, 又是 begin 又是 end 的代码特别冗余。

而对于 vector,更多使用偏移量来遍历访问。

二、新的遍历

c++11 的语法里,引入了其他语言的 foreach 概念,使得遍历特别简单。

比如对于 map,直接就得到了键值对。

而对于 vector, 则可以直接得到值列表。

不过,对于 vector,迭代的时候,只有值的引用,而没有下标,这里是这个语言的缺憾吧。

三、最后

面对 c++11 的 foreach,除了 vector 不能得到下标外,其他的我都很满意。

当然,这个通过指针运算(&v - &vec[0])/sizeof(v)也是一个方法,但是就没有那么优美了。

面对这个问题,你有什么建议吗?

-EOF-

本文公众号:天空的代码世界
个人微信号:tiankonguse
QQ算法群:165531769(不止算法)
知识星球:不止算法

本文首发于公众号:天空的代码世界,微信号:tiankonguse
如果你想留言,可以在微信里面关注公众号进行留言。

点击查看评论

关注公众号,接收最新消息

关注小密圈,学习各种算法

tiankonguse +
穿越