【问题标题】:Invalid use of List Iterator in c++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”吗?
  • 对不起,伙计们……看来我需要睡觉了……我怎么能滑倒这个! ...

标签: c++


【解决方案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++;
     }
    

    【讨论】:

      猜你喜欢
      • 2021-09-18
      • 1970-01-01
      • 1970-01-01
      • 2013-02-07
      • 2012-05-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-11
      相关资源
      最近更新 更多