【问题标题】:Const Iterator Reference Iterator Error [closed]常量迭代器引用迭代器错误
【发布时间】:2015-08-03 19:51:06
【问题描述】:
class Train_model
{
std::vector<Train *> trains_;
public:
const std::vector<Train *>& Trains() const { return trains_; }; // return read_only reference
}

// in a function that uses Train_model
const std::vector<Train *> trains = train_model->Trains();
for (std::vector<Train *>::const_iterator *it = trains.begin(); it != trains.end(); ++it)
{

}

错误是:

/Users/user/Desktop/TEO/TEO/gurobi_model.cpp:16:48:不可行 从“迭代器”(又名“__normal_iterator”)到“std::vector&lt;Train *&gt;::const_iterator *”(又名 '__normal_iterator&lt;const_pointer, vector_type&gt; *')

我想遍历向量中的所有条目,但迭代器坏了?我该如何解决这个问题?

【问题讨论】:

  • std::vector&lt;Train *&gt;::const_iterator *it 应该是std::vector&lt;Train *&gt;::const_iterator it;删除*
  • @Niall 如果是错字,最好不要回复?否则你会鼓励更多的错字问题......“回答部分或根本不回答”!

标签: c++ iterator constants std


【解决方案1】:

这是一个错字;

std::vector<Train *>::const_iterator *it

应该是

std::vector<Train *>::const_iterator it
//                                   ^^ drop the *

迭代器已经表现得像指针,不需要间接。

【讨论】:

    【解决方案2】:

    你不应该使用指向迭代器的指针,就像另一个说的那样:

    std::vector< Train* >::const_iterator it;
    

    但还有一件事,我认为应该提及。如果您写下下面的行,则应该使用cbegin()cend() 而不是非c 版本:

    for ( std::vector< Train* >::const_iterator it = trains.cbegin(); it != trains.cend(); ++it )
    {
        // ...
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-18
      • 2015-10-24
      • 2014-03-20
      • 2013-09-13
      相关资源
      最近更新 更多