我的代码看起来像这样
#define tr(c,i) for(typeof((c).begin() i = (c).begin(); i != (c).end(); i++)
...
typedef vector<long> vl;
vl numbers;
...
tr(numbers, j) { // this is line 95
...
}
Run Code Online (Sandbox Code Playgroud)
代码对我来说没问题,但对我的编译器不行!无情地,我得到以下错误:
code.cpp:在函数'int main()'中:
code.cpp:95:9:错误:实例化后'std :: vector :: iterator'的特化
code.cpp:95:9:错误:'typeof'之前的预期primary-expression
code.cpp:95:9:错误:预期';' 在'typeof'之前
code.cpp:95:9:错误:对于'范围',ISO'的'j'名称查找已更改
code.cpp:95:9:注意:(如果使用'-fpermissive',G ++会接受你的代码)
code.cpp:95:9:错误:'j!= numbers.std :: vector <_Tp,_Alloc> :: end with _Tp = long int,_Alloc = std :: allocator中的'operator!='不匹配std :: vector <_Tp,_Alloc> :: iterator = __gnu_cxx :: __ normal_iterator>,typename std :: _ Vector_base <_Tp,_Alloc> :: _ Tp_alloc_type :: pointer = long int*'
我在这里错过了什么?
宏中有一个缺少的括号.
#define tr(c,i) for(typeof((c).begin() i = (c).begin(); i != (c).end(); i++)
^
Need ) here
Run Code Online (Sandbox Code Playgroud)
尝试修复它,看看你得到了什么错误.
次要注意事项1:迭代时,使用++i而不是i++前者对于迭代器来说通常更快.
次要注释2:typeof是GCC特定的扩展.您的代码将无法在其他编译器上编译.
| 归档时间: |
|
| 查看次数: |
2838 次 |
| 最近记录: |