学习 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
公众号ID:tiankonguse-code
本文首发于公众号:天空的代码世界,微信号:tiankonguse
如果你想留言,可以在微信里面关注公众号进行留言。