【发布时间】:2012-07-20 03:27:54
【问题描述】:
我写了这段代码:
#define VECTOR_LOOP_V(X) for (vector<typeof(X)>::iterator it = X.begin(); it != X.end(); it++)
为了更快地为向量编写 for 循环,但由于某种原因它不起作用,当我尝试编译它时,它给了我非常非常长的错误消息。
test.cpp: In function ‘int main(int, char**)’:
test.cpp:20:5: error: conversion from ‘std::vector<std::basic_string<char> >::iterator {aka __gnu_cxx::__normal_iterator<std::basic_string<char>*, std::vector<std::basic_string<char> > >}’ to non-scalar type ‘std::v
等等。
【问题讨论】:
-
相信我,对于 C++,这是一个非常非常短的错误消息。
-
你应该写完整的错误信息,而不是随便剪到某个地方。我敢打赌,删掉的第一个字符会说类似
std::vector< std::vector< std::basic_string...的内容,这应该会给你一个关于副本结构左侧是什么的提示...... -
C++11 对你不可用,我猜?基于范围的
for循环是新的热点。 -
如果您还没有基于范围的
for,请尝试 Boost FOREACH。