C++ 如何在linkedlist中使用find 这里是我使用STL库的代码,在这里我尝试在末端、中间和前面插入一个节点。为了在中间插入,我希望在特定节点之后提供插入,而不是通过将迭代器递增2,因为如果它是长列表,我可能不知道该如何增加它,

C++ 如何在linkedlist中使用find 这里是我使用STL库的代码,在这里我尝试在末端、中间和前面插入一个节点。为了在中间插入,我希望在特定节点之后提供插入,而不是通过将迭代器递增2,因为如果它是长列表,我可能不知道该如何增加它,,c++,stl,C++,Stl,请帮助查找功能不工作的原因: #include <iostream> #include <list> #include <string> using namespace std; void printlist(list<int> l) { list<int>::iterator it = l.begin(); for (it; it != l.end(); ++it) { cout <&

请帮助查找功能不工作的原因:

#include <iostream>
#include <list>
#include <string>

using namespace std;

void printlist(list<int> l)
{
    list<int>::iterator it = l.begin();
    for (it; it != l.end(); ++it)
    {
        cout << "printlist function call list items:  " << *it << endl;
    }
}

int main()
{
    list<int> l;
    l.push_back(1);
    l.push_back(2);
    l.push_back(3);
    list<int>::iterator it = l.begin();
    cout << 1 << endl;
    printlist(l);
    l.push_front(0);
    cout << 2 << endl;
    printlist(l);
    it = l.find(l.begin(), l.end(), 2);
    l.insert(it, 25);
    cout << 3 << endl;
    printlist(l);
    return 0;
}
#包括
#包括
#包括
使用名称空间std;
作废打印列表(列表l)
{
list::iterator it=l.begin();
for(it;it!=l.end();++it)
{
cout
std::list
没有
find()
方法。您可以使用中声明的标准算法:

std::list
没有
find()
方法。您可以使用中声明的标准算法:

但为了详细说明@NeilKirk在评论中提出的一个重要观点,您写道:

void printlist(list<int> l)
{
    list<int>::iterator it = l.begin();
    for (it; it != l.end(); ++it)
    {
       cout << "printlist function call list items:  " << *it << endl;
    }
}
或者,如果您不打算进行任何更改,则最好通过以下方式宣布:

void printlist(list<int> & l) { ... }
void printlist(list<int> const & l) { ... }
在这种精神下,有很多方法可以发挥想象力。但更关键的是不要复制数据结构,在不需要时按值传递它们!

请参见

但为了详细说明@NeilKirk在评论中提出的一个重要观点,您写道:

void printlist(list<int> l)
{
    list<int>::iterator it = l.begin();
    for (it; it != l.end(); ++it)
    {
       cout << "printlist function call list items:  " << *it << endl;
    }
}
或者,如果您不打算进行任何更改,则最好通过以下方式宣布:

void printlist(list<int> & l) { ... }
void printlist(list<int> const & l) { ... }

在这种精神下,有很多方法可以发挥作用。但更关键的是不要复制数据结构,在不需要时按值传递它们!

find不是一个成员函数,它是在
中定义的模板…使用
it=find(l.begin(),l.end(),2);
为什么复制整个列表只是为了打印其元素?“请帮助查找功能为什么不起作用:”欢迎来到C++鲨鱼坦克。这一切都超出了这里的任何善意。改进你的问题第一。。花一些时间回顾所有提供的东西,以及其中的样本可能会有很大帮助。罐头,值得注意的,同样是有益的。这些部分经常出现的挑剔:“STL”。STL是集合编译器的C++标准库。STL是集合设计的历史来源,最终被修改和修改成为集合类的C++标准库……但它们是两种不同的东西。而有些则继续使用术语,但它实际上不是ID。eal这样做。find不是一个成员函数,它是在
中定义的模板。使用
it=find(l.begin(),l.end(),2);
为什么复制整个列表只是为了打印它的元素?“请帮助为什么find函数不起作用:”欢迎来到C++鲨鱼坦克。这一切都超出了这里的任何善意。改进你的问题第一。。花一些时间回顾所有提供的东西,以及其中的样本可能会有很大帮助。罐头,值得注意的,同样是有益的。这些部分经常出现的挑剔:“STL”。STL是集合编译器的C++标准库。STL是集合设计的历史来源,最终被修改和修改成为集合类的C++标准库……但它们是两种不同的东西。而有些则继续使用术语,但它实际上不是ID。我们必须这样做。