c++中列表迭代器的无效使用
Posted
技术标签:
【中文标题】c++中列表迭代器的无效使用【英文标题】:Invalid use of List Iterator in c++ 【发布时间】:2010-07-15 16:01:56 【问题描述】:int 数 = 0; list::iterator it; for(it = binary.const_iterator; it !=binary.end(); ++it) 如果(*它=='1') abc.push_back(copyoflist.at(num)); 数++;
这里的二进制定义为列表二进制; copyoflist 是一个 char 类型的向量。
我收到此错误: 'std::list >::const_iterator' 的无效使用 就行了
for(it = binary.const_iterator; it !=binary.end(); ++it)
我无法弄清楚出了什么问题。有人可以帮帮我吗?
【问题讨论】:
你的意思是“binary.begin()”而不是“binary.const_iterator”吗? 对不起,伙计们……看来我需要睡觉了……我怎么能滑倒这个! ... 【参考方案1】:const_iterator
是一个类型,而不是一个属性。你可以这样使用它:
list<char>::const_iterator it;
for(it = binary.begin(); it != binary.end(); ++it)
【讨论】:
【参考方案2】:你需要:
for (it=binary.begin(); it != binary.end(); ++it)
【讨论】:
他领先我一分钟,但只是因为我停下来修正问题的格式...... @James Curran:因为FGITW,也许你需要先回答,然后再解决问题。 8v) 我也为你的答案 +1。 尽管有延迟,但我觉得James的回答好一点,不仅指出了要做什么,还指出了为什么当前的代码是错误的。【参考方案3】: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++;
【讨论】:
以上是关于c++中列表迭代器的无效使用的主要内容,如果未能解决你的问题,请参考以下文章