Job*_*Job 11 c++ c++11 type-deduction
比方说,我有一个c
提供size()
方法的类型的容器,我想循环遍历这个容器,同时跟踪每个项目的索引:
for (/*TODO*/ i = 0; i < c.size(); i++) {...}
Run Code Online (Sandbox Code Playgroud)
在后C++ 11世界中,自动类型演绎很好地解决了很多问题.我们应该用什么来取代TODO
上述?对我来说唯一正确的,无论类型size()
是什么,如下:
for (decltype(c.size()) i = 0; i < c.size(); i++) {...}
Run Code Online (Sandbox Code Playgroud)
但这看起来过于冗长,在我看来,这无助于可读性.
另一种解决方案可能是:
for (auto end = c.size(), i = 0; i < end; i++) {...}
Run Code Online (Sandbox Code Playgroud)
但这也无助于可读性,当然,它与原始片段没有相同的语义.
所以,我的问题是:只给出索引限制的类型,推断循环索引变量类型的最佳方法是什么.
归档时间: |
|
查看次数: |
959 次 |
最近记录: |