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 )
{
// ...
}
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 )
{
// ...
}