Pat*_*ini 7 c++ generics macros iterator stl
所以,我正在尝试定义一个宏来简化以下代码:
for (vector<TYPE>::iterator iter = iterable.begin();
iter != iterable.end(); iter++)
Run Code Online (Sandbox Code Playgroud)
和
for (map<TYPE, TYPE>::iterator iter = iterable.begin();
iter != iterable.end(); iter++)
Run Code Online (Sandbox Code Playgroud)
等等
到目前为止,我已经有了
#define every(iter, iterable) ::iterator iter = iterable.begin(); iter != iterable.end(); iter++
for (vector<TYPE> every(iter, iterable))
Run Code Online (Sandbox Code Playgroud)
但我想进一步简化这一点.
理想情况下,我希望能够做到
for (every(iter, iterable))
Run Code Online (Sandbox Code Playgroud)
这意味着我需要以某种方式获得class<TYPE>可迭代对象.这可能吗?如果是这样,我该怎么办?
iterator对象的(相对)大型代码库.#define every(iter, iterable) typeof(iterable.begin()) iter = iterable.begin(); iter != iterable.end(); iter++
for (every(iter, iterable))
Run Code Online (Sandbox Code Playgroud)
这个答案并不能依赖于C++ 11,但它需要typeof,其中一些编译器可能没有.应该适用于任何最近的g ++
#define For(iter, iterable) for(typeof((iterable).begin()) iter = (iterable).begin(); iter != (iterable).end(); ++iter)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2977 次 |
| 最近记录: |