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&lt;T&gt;::const_iterator 是一个类似于vector&lt;T&gt;::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++中列表迭代器的无效使用的主要内容,如果未能解决你的问题,请参考以下文章

C++迭代器的使用和操作总结

c++中迭代器的问题为啥这样会报错?

C++ 中map 中迭代器的简单使用:

C++向量调试实现

C++ 的STL中,迭代器那个指针为何++能指向下一个元素?

C++ 标准库值操作迭代器的常见函数