访问迭代器对象值 cplusplus
Access iterater object value cplus plus
我正在尝试用 C++ 实现 bfs。为了做到这一点,我创建了一个名为 closedList 的变量,它应该保留我已经访问过的状态。然而在调试中,当我尝试使用迭代器打印关闭列表中的状态时,它说。
cannot convert ‘std::deque<state_t, std::allocator<state_t>>::iterator* {aka std::_Deque_iterator<state_t, state_t&, state_t*>*}’ to ‘const state_t*’ for argument ‘2’ to ‘ssize_t print_state(FILE*, const state_t*)’ print_state(stdout, &it);
代码如下:
for (std::deque<state_t>::iterator it=closedList.begin();it!=closedList.end();++it) {
print_state(stdout, &it);
}
非常感谢任何帮助。
您对迭代器的引用不正确
print_state(stdout, &it);
您将使用 *
运算符
print_state(stdout, *it)
并根据 print_state
的签名判断
print_state(FILE*, const state_t*)
看起来应该是
print_state(stdout, &(*it))
我正在尝试用 C++ 实现 bfs。为了做到这一点,我创建了一个名为 closedList 的变量,它应该保留我已经访问过的状态。然而在调试中,当我尝试使用迭代器打印关闭列表中的状态时,它说。
cannot convert ‘std::deque<state_t, std::allocator<state_t>>::iterator* {aka std::_Deque_iterator<state_t, state_t&, state_t*>*}’ to ‘const state_t*’ for argument ‘2’ to ‘ssize_t print_state(FILE*, const state_t*)’ print_state(stdout, &it);
代码如下:
for (std::deque<state_t>::iterator it=closedList.begin();it!=closedList.end();++it) {
print_state(stdout, &it);
}
非常感谢任何帮助。
您对迭代器的引用不正确
print_state(stdout, &it);
您将使用 *
运算符
print_state(stdout, *it)
并根据 print_state
print_state(FILE*, const state_t*)
看起来应该是
print_state(stdout, &(*it))