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)
我想循环遍历向量中的所有条目,但是迭代器被破坏了?我该如何解决这个问题?
答案 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 )
{
// ...
}