找到该范围内元素的位置 C++11 基于 for loop?
假设我有以下代码:
我可以找到一个位置吗?
在载体中而不保持单独的迭代器?
</int>
vector<int> list;
for/auto& elem:list/ {
int i = elem;
}
我可以找到一个位置吗?
elem
在载体中而不保持单独的迭代器?
</int>
没有找到相关结果
已邀请:
11 个回复
董宝中
赞同来自:
诀窍是使用组成:而不是直接排出容器,而不是 "zip" 它在途中有指数。
专业拉链代码:
并使用它:
你可以看到它
http://ideone.com/rAcaZ
, 虽然他缺乏一个循环支持 for-range, 因此,它不太美丽。
EDIT
:
只是记住,我应该经常检查 Boost.Range. 不幸的是没有范围
, 但我发现了 perl:
http://www.boost.org/doc/libs/ ... .html
. 但是,它需要访问迭代器以提取索引。 丢人现眼 :x
否则
http://www.boost.org/doc/libs/ ... .html
和常见
我相信你可以做一些有趣的事情......
在完美的世界里,我想:
从
自动创建演示文稿作为一系列参考元组和
只是创造一个范围 "false", 这开始了
并依靠无限 /或者,嗯,它的最大类型....../.
</int></int></vector></limits></iterator></iostream></t></t></typename></size_t,></inner_iterator></t></typename></t></typename></typename>
君笑尘
赞同来自:
但是,在您的情况下,它可以使用算术指针计算,以来
始终如一地存储其元素 /*/
但这显然是一个糟糕的做法,因为它让代码混淆了 &, 使它变得更加脆弱 /如果有人更改容器类型,则会轻松地破坏,使操作员重载
或取代 'auto&' 在 'auto'. /
NOTE: 在标准中保证革命保证了向量 C++03, 以及阵列和字符串标准 C++11.
</int>
龙天
赞同来自:
.
知食
赞同来自:
https://www.boost.org/doc/libs ... .html
:
https://ideone.com/JDjsTB
它与提到的工作几乎相同 "ideal world solution", 它具有美丽的语法和简化。 笔记 , 哪种类型
在这种情况下,是类似的
, 因此,它处理那里的链接并没有执行复制。 它甚至非常有效:
https://godbolt.org/g/e4LMnJ
/代码相当于存储自己的变量计数器,这是尽可能好的/
对于完整的图片,考虑替代方案:
或使用连续的矢量属性:
第一个生成与适配器版本相同的代码 boost /最佳的/, 最后一个 1 该指令更长:
https://godbolt.org/g/nEG8f9
注意:如果您只想知道您是否有最后的项目,请使用:
它适用于每个标准容器,但是
/
必须使用 /如上/, 但仍然建议。 根据输入数据,它也可以很快 /特别是当编译器知道您的向量的大小时/
代替
在
, 为了一个公共代码是安全的。
</const></std::string>
龙天
赞同来自:
合作 clang 3.4 和 gcc 4.9 /而不是 4.8/; 对于你需要安装的两者
. 你需要的原因 c++14, 位于参数中
在功能中 lambda.
</std::string></typename></functional></vector></string></iostream>
石油百科
赞同来自:
我不认为有一个清洁工 / 基于循环范围的简单解决方案。 但真的,为什么不使用标准 /;;/? 它可能会使您的意图和代码最清晰。
</int>
江南孤鹜
赞同来自:
在哪里
这将是您所需的索引。
它使用了这个事实
https://coderoad.ru/7609169/
.
</int>
冰洋
赞同来自:
EDIT:
例如,它打印一个容器在最后一个元素中发送分隔符。 适用于我可以想象的大多数集装箱 /包括阵列/, /在线演示
http://coliru.stacked-crooked. ... 87f91
/:
</double></double></double></double></class></set></list></vector></iostream>
小明明
赞同来自:
https://github.com/therocode/e ... e.hpp
https://blog.therocode.net/201 ... index
非常好用:
</int>
窦买办
赞同来自:
结果:
</iostream>
郭文康
赞同来自:
索引变量本地为一个周期,可以使用 lambda 使用变量:
</char>