2010-07-15 60 views
0

int num = 0; list :: iterator it; (it = binary.const_iterator; it!= binary.end(); ++ it){if it =='1'){ abc.push_back(copyoflist.at(num)); } num ++; }在C++中使用List Iterator无效

这里二进制被定义为列表二进制; copyoflist是一个char类型的向量。

我收到此错误: 无效使用“的std ::名单> ::为const_iterator” 上线

for(it = binary.const_iterator; it !=binary.end(); ++it) 

现在无法弄清楚什么错误。有人可以帮我吗 ?

+0

你的意思是“binary.begin()”而不是“binary.const_iterator”吗? – AraK 2010-07-15 16:05:05

+0

对不起家伙......看起来像我需要一些睡眠......我怎么可以滑倒这一个! ... – 2010-07-15 16:06:31

回答

3

const_iterator是一个类型,而不是一个属性。你会使用这样的:

list<char>::const_iterator it; 
for(it = binary.begin(); it != binary.end(); ++it) 
3

您需要:

for (it=binary.begin(); it != binary.end(); ++it) 
+0

+1打我6秒。 – 2010-07-15 16:05:44

+0

他打了我一分钟,但只是因为我停下来修复问题的格式.... – 2010-07-15 16:07:24

+0

@James Curran:因为FGITW,也许你需要先回答,然后解决问题。 8v)我+你的答案也是。 – 2010-07-15 16:11:05

2

vector<T>::const_iterator就像vector<T>::iterator一个类型。当你声明迭代器时,你可以使用其中一个或另一个,这取决于你在循环中需要做什么。您始终使用begin()end()或反向等价物进行初始化和条件。

int num = 0; 
list<char>::const_iterator it; 
for(it = binary.begin(); it !=binary.end(); ++it) { 
    if(*it == '1') { 
    abc.push_back(copyoflist.at(num)); 
    } 
    num++; 
}