您的位置:首页 > 编程语言 > C语言/C++

C++中容易忘的知识点——list和forward_list(四)

2017-10-04 17:14 169 查看
这两个容器都很少用,所有这里就只对知识点进行总结

list容器

list是双向链表结构,它的数据由若干个节点构成,每一个节点都包括一个信息块(即实际存储的数据)、一个前驱指针和一个后驱指针。



list的特点

不支持随机访问;

在任何位置插入或删除非常迅速;

list的初始化和成员函数



//初始化

//第一种,构造函数
int a[] = {1,2,3,4,5};
list<int> l1(a, a+5);        // 将数组a的内容赋值给l1
list<int> l2(2,100);         // 2个值为100的元素
list<int> l3(l2);
list<int> l4(l3.begin(),l3.end());
//第二种,用push_back或push_front
for (int i = 1; i <= 5; ++i)
l5.push_back(i);
l5.push_front (200);
l5.push_front (300);
//第三种,用assign
list<int> first;
list<int> second;
first.assign(7,100);                       // 给first添加7个值为100的元素
second.assign(first.begin(), first.end()); // 复制first给second


有关其他函数的应用,可以参考下面的连接,很详细。list成员函数的使用。

forward_list 容器

forward_list是一个单向链表,只支持单向顺序访问,在链表的任何位置进行插入/删除操作都非常快。



forward_list的特点

forward_list只提供钱箱迭代器,因此不支持反向迭代器,比如rbegin()等成员函数。

forward_list不提供size()成员函数。

forward_list没有指向最末元素的锚点,因此不提供back()、push_back()和pop_back()。

forward_list不提供随机访问,这一点跟list相同。

插入和删除元素不会造成“指向至其他元素”的指针,引用和迭代器失效。

forward_list的初始化和成员函数



forward_list容器还支持非修改类函数,比如:==,!=,<,>,<=,>=。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c++ list forward-li