这个错误信息表明你尝试使用 operator<<
来输出一个 std::_List_iterator<int>
类型的对象,但标准库中没有为这种类型的迭代器定义 operator<<
重载。std::_List_iterator<int>
是 C++ 标准库中用于遍历 std::list
容器的迭代器类型。
std::list
:C++ 标准库中的一个双向链表容器。operator<<
:C++ 中的插入运算符,通常用于将数据输出到流(如 std::cout
)。std::_List_iterator<int>
没有定义 operator<<
重载,因此当你尝试使用 std::cout << iterator;
时,编译器找不到合适的函数来执行这个操作。
要解决这个问题,你可以:
std::_List_iterator<int>
类型定义一个 operator<<
重载。以下是两种解决方法的具体实现:
#include <iostream>
#include <list>
int main() {
std::list<int> myList = {1, 2, 3, 4, 5};
for (auto it = myList.begin(); it != myList.end(); ++it) {
std::cout << *it << " ";
}
return 0;
}
#include <iostream>
#include <list>
std::ostream& operator<<(std::ostream& os, const std::list<int>::iterator& it) {
os << *it;
return os;
}
int main() {
std::list<int> myList = {1, 2, 3, 4, 5};
for (auto it = myList.begin(); it != myList.end(); ++it) {
std::cout << it << " ";
}
return 0;
}
通过这两种方法,你可以成功地将 std::list
中的元素输出到标准输出流中。
领取专属 10元无门槛券
手把手带您无忧上云