zoukankan      html  css  js  c++  java
  • 【C++】STL顺序容器list

    list

    list是顺序容器中的一种,同vector相比,vector是顺序表的顺序存储方式,而list是顺序表的链式存储结构。


    一、STL中List特点:

            1.循环双链表结构
            2.具有一个尾结点,满足STL左闭右开的原则
            3.与vector不同,对于list的迭代器而言,不再是简单数据类型的指针,因为list中每个Node所在的内存并不要求连续,对于迭代器的++,--等操作,并不是地址的++,--操作,而是需要切到下一个节点所在的地址。
            4.插入和删除list需要的时间复杂度是O(1),并且不像vector一样,因为内存重新分配而导致迭代器失效。
    image

    二、list的常用API

    API 功能
    assign() 给list赋值
    back() 返回最后一个元素
    begin() 返回指向第一个元素的迭代器
    clear() 删除所有元素
    empty() 如果list是空的则返回true
    end() 返回末尾的迭代器
    erase() 删除一个元素
    front() 返回第一个元素
    get_allocator() 返回list的配置器
    insert() 插入一个元素到list中
    max_size() 返回list能容纳的最大元素数量
    merge() 合并两个list
    pop_back() 删除最后一个元素
    pop_front() 删除第一个元素
    push_back() 在list的末尾添加一个元素
    push_front() 在list的头部添加一个元素
    rbegin() 返回指向第一个元素的逆向迭代器
    remove() 从list删除元素
    remove_if() 按指定条件删除元素
    rend() 指向list末尾的逆向迭代器
    resize() 改变list的大小
    reverse() 把list的元素倒转
    size() 返回list中的元素个数
    sort() 给list排序
    splice() 合并两个list
    swap() 交换两个list
    unique() 删除list中重复的元素

    三、构造方式

    list<int>lst1;           //创建空list
    list<int> lst2(5);       //创建含有5个元素的list
    list<int>lst3(3,2);      //创建含有3个元素的list,并初始化为2
    list<int>lst4(lst2);     //使用lst2初始化lst4
    list<int>lst5(lst2.begin(),lst2.end());  //同lst4
    

    四、正序遍历和逆序遍历

    #include<iostream>
    #include <list>
    using namespace  std;
    
    
    int main()
    {
    	list<int>lst1;           //创建空list
    	list<int> lst2(5);       //创建含有5个元素的list
    	list<int>lst3(3, 2);      //创建含有3个元素的list,并初始化为2
    	list<int>lst4(lst2);     //使用lst2初始化lst4
    	list<int>lst5(lst2.begin(), lst2.end());  //同lst4
    	lst2.push_back(1);
    	lst2.push_back(2);
    	lst2.push_back(3);
    	lst2.push_back(4);
    	lst2.push_front(5);
    	cout << "list2 size: " << lst2.size() << endl;  //在原有五个元素的基础上又新增了五个元素
    	for (list <int> ::iterator it = lst3.begin(); it != lst3.end(); it++)
    		cout << *it << endl;
    	for (list<int>::reverse_iterator it = lst2.rbegin(); it != lst2.rend(); it++)
    		cout << *it << endl;
    	system("pause");
    
    	return 0;
    }
    
    

    五、记录

    image

    image

    image

    image

    image

  • 相关阅读:
    国外可用的谷歌地图(可根据地址搜索经纬度)
    后台css框架(自用)
    DBHelp类sql分页(自用笔记)
    定制C++高效安全的运行时动态类型转换
    C++11右值引用和std::move语句实例解析
    浏览器内核-Webkit
    获取股票历史数据和当前数据的API
    从浏览器启动应用程序
    一个实时获取股票数据的安卓应用程序
    C++数据类型总结
  • 原文地址:https://www.cnblogs.com/Raowz/p/14617880.html
Copyright © 2011-2022 走看看