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

来源:互联网 发布:禅道数据库配置 编辑:程序博客网 时间:2024/05/16 08:54

  这两个容器都很少用,所有这里就只对知识点进行总结

list容器

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

list的特点

  1. 不支持随机访问;
  2. 在任何位置插入或删除非常迅速;

list的初始化和成员函数

成员函数以及初始化

//初始化//第一种,构造函数int a[] = {1,2,3,4,5};list<int> l1(a, a+5);        // 将数组a的内容赋值给l1list<int> l2(2,100);         // 2个值为100的元素list<int> l3(l2);list<int> l4(l3.begin(),l3.end());  //第二种,用push_back或push_frontfor (int i = 1; i <= 5; ++i) l5.push_back(i);l5.push_front (200);l5.push_front (300);//第三种,用assignlist<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的特点

  1. forward_list只提供钱箱迭代器,因此不支持反向迭代器,比如rbegin()等成员函数。
  2. forward_list不提供size()成员函数。
  3. forward_list没有指向最末元素的锚点,因此不提供back()、push_back()和pop_back()。
  4. forward_list不提供随机访问,这一点跟list相同。
  5. 插入和删除元素不会造成“指向至其他元素”的指针,引用和迭代器失效。

forward_list的初始化和成员函数

这里写图片描述

  forward_list容器还支持非修改类函数,比如:==,!=,<,>,<=,>=。

原创粉丝点击