Const 迭代器引用迭代器错误

Const Iterator Reference Iterator Error

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: No viable conversion from 'iterator' (aka '__normal_iterator') to 'std::vector<Train *>::const_iterator *' (aka '__normal_iterator<const_pointer, vector_type> *')

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

这是一个错字;

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

应该是

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

迭代器已经充当指针,不需要间接寻址。

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

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

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

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