您的位置:首页 > 其它

list容器

2016-05-28 22:01 155 查看
list使用一个双向链表来管理元素。



list的功能

list不支持随机存取。所及既不提供下表操作符,也不提供at()函数。

任何位置上插入元素删除元素都很快。

插入和删除操作不会造成指向其他元素的pointers、references、iterators失效。

list对于异常的处理方式是:要么成功,要么什么都不发生。

不提供容量、空间重新分配等操作函数。

元素的插入

#include <iostream>
#include <list>
using namespace std;
void printlistcontents(const list<int>& listinput)
{
list<int>::const_iterator iter;
for (iter = listinput.begin();
iter != listinput.end();
++iter)
cout << *iter << endl;
}
int main()
{
list<int> a;
list<int> b;
list<int>::iterator iter;

b.push_back(100);
b.push_back(200);
b.push_back(300);
b.push_back(400);
b.push_back(500);

printlistcontents(b);
cout << endl;
a.push_front(4);
a.push_front(3);
a.push_front(2);
a.push_front(1);
a.push_front(5);

iter = a.begin();
++iter;
a.insert(a.begin(), 10);
++iter;
a.insert(a.end(), 4, 20);
a.insert(a.begin(), b.begin(), b.end());
a.insert(a.begin(),++ b.begin(), --b.end());
printlistcontents(a);
return 0;
}


元素的删除

#include <iostream>
#include <list>
using namespace std;
void PrintListContents(const list<int>& listInput)
{
cout << "{";
list<int>::const_iterator iter;
for (iter = listInput.begin();
iter != listInput.end();
++iter)
cout << *iter << " ";
cout << "}" << endl;
cout << endl;
}
int main()
{
list<int> a;
a.push_front(4);
a.push_back(3);

PrintListContents(a);
a.reverse();
PrintListContents(a);
list<int>::iterator iter;

iter = a.insert(a.begin(), 2);
a.push_front(1);
a.push_back(0);

PrintListContents(a);

a.erase(a.begin(),iter);
PrintListContents(a);

a.erase(iter, a.end());
PrintListContents(a);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: