【发布时间】:2014-11-23 11:54:28
【问题描述】:
这是我使用 STL 库的代码,我尝试在末尾、中间和前面插入一个节点。为了在中间插入,我想提供插入 after 一个特定节点,而不是通过将迭代器增加 2,因为如果它是一个长列表,我可能不知道如何增加它,
请帮助为什么查找功能不起作用:
#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;
}
谢谢...
【问题讨论】:
-
find 不是成员函数,它是
<algorithm>中定义的模板...使用it= find(l.begin(),l.end(),2); -
为什么复制整个列表只是为了打印它的元素?
-
“请帮助为什么 find 功能不起作用:” 欢迎使用 c++ 鲨鱼缸。这一切都超出了这里的任何善意。改进你的问题 1st.__
-
花一些时间查看std::list<> 提供的所有内容以及其中的示例可能会有很大帮助。罐头algorithms,值得注意的
std::find,同样有帮助。 -
在这些部分中经常出现的问题:“STL”不是编译器附带的 C++ 标准集合类库。 STL 是集合设计的历史来源,最终被修改和修改成为集合类的 C++ 标准库……但它们是两个不同的东西。虽然有些人继续交替使用这些术语,但这样做并不理想。