gpt4 book ai didi

c++ - STL 可迭代对象的迭代器循环宏

转载 作者:可可西里 更新时间:2023-11-01 18:21:07 29 4
gpt4 key购买 nike

概念

因此,我试图定义一个宏来简化以下代码:

for (vector<TYPE>::iterator iter = iterable.begin(); 
iter != iterable.end(); iter++)

for (map<TYPE, TYPE>::iterator iter = iterable.begin();
iter != iterable.end(); iter++)

等等

现有工作

到目前为止,我有

#define every(iter, iterable) ::iterator iter = iterable.begin(); iter != iterable.end(); iter++
for (vector<TYPE> every(iter, iterable))

但我想进一步简化它。

目标

理想情况下,我希望能够做到

for (every(iter, iterable))

这意味着我需要以某种方式获得 class<TYPE>的可迭代对象。这可能吗?如果可以,我该怎么做?

规定

  • 理想情况下,这需要进入一个(相对)大型代码库,该代码库已经设置好以访问 iterator对象。
  • 我在 C++11 之前的编译器上运行

胜利

#define every(iter, iterable) typeof(iterable.begin()) iter = iterable.begin(); iter != iterable.end(); iter++
for (every(iter, iterable))

最佳答案

这个答案依赖于 C++11,但它需要一些编译器可能没有的 typeof。应该适用于任何最新的 g++

#define For(iter, iterable) for(typeof((iterable).begin()) iter = (iterable).begin(); iter != (iterable).end(); ++iter)

关于c++ - STL 可迭代对象的迭代器循环宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8439907/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com