Const Iterator参考迭代器错误

时间:2015-08-03 19:51:06

标签: c++ iterator const std

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:没有可行性   从&#39; iterator&#39;转换(又名&#39; __ normal_iterator&#39;)到&#39; std::vector<Train *>::const_iterator *&#39; (又名   &#39; __normal_iterator<const_pointer, vector_type> *&#39)

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

2 个答案:

答案 0 :(得分:2)

这是一个错字;

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

应该是

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

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

答案 1 :(得分:0)

你不应该使用指向迭代器的指针,正如另一个所说:

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

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

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