zoukankan      html  css  js  c++  java
  • 由一段代码说开去——list

     1 #include <list>//双向循环链表
     2 #include <iostream>
     3 #include <algorithm>
     4 using namespace std;
     5 int main()
     6 {
     7   list<int> L;
     8   L.push_back(2);
     9   L.push_back(1);
    10   L.push_back(5);
    11   //尾部元素扩张
    12   L.push_front(8);
    13   //头部元素扩张
    14   list<int>::iterator it;
    15   it=L.begin();
    16   L.insert(++it,2);//中间插入;
    17   for(it=L.begin();it!=L.end();it++)
    18   {
    19     cout<<*it<<" ";//向前遍历
    20   }
    21   cout<<endl;
    22   
    23   L.remove(2);//定值删除
    24   L.sort();//降序排列
    25   list<int>::reverse_iterator ri=L.rbegin();
    26   for(;ri!=L.rend();ri++)
    27   {
    28     cout<<*ri<<" ";//反向遍历
    29   }
    30   cout<<endl;
    31   
    32   it=find(L.begin(),L.end(),8);//查找元素
    33   if(it!=L.end())
    34   {
    35     cout<<*it<<endl;;
    36   }
    37   else
    38   {
    39     cout<<"Not found.\n";
    40   }
    41   cin.get();
    42   return 0;
    43 }

    1.list是双向循环链表,和vector是两个具有代表性的东西,

    vector是顺序表的结构
    2.list既然是链表了就方便头尾中插入删除

    但是不方便随机访问  嗯 则个插入删除啊 就是比较灵活的

    可以 push_front()头插入 push()_back();尾插入

    都只需要一个参数表明插入的元素;

    也可以insert(迭代器,元素)来顶点插入;

    3.list的删除功能就相当强大了,有remove(a);删除和a相等的所有元素,

    unique();让所有元素在list内独一无二;

    还有insert对应的erase ,push_front()对应的pop_front

    push_back对应的pop_back();

    4.list的sort功能可以按元素降序排列,不需要参数即可,

    5.list的find功能还是比较强大的除了红黑树外 基本上也就它用了有意义吧,

    但是find不是他的成员方法;

    6.由list引出的一些模型 如先入后出的stack

    先入先出的 queue及其变形priority_queue()都是不错的模版,

    有机会画个表格总结一下.

  • 相关阅读:
    Android开发之记账本开发第四天
    动手动脑——继承与多态
    跟踪某个类所创建对象的个数
    动手动脑——类与对象
    石家庄地铁模拟
    动手动脑——方法
    查询单词出现次数
    动手动脑——JAVA语法基础
    原码反码补码
    ATM机模拟系统
  • 原文地址:https://www.cnblogs.com/dragonfive/p/2909990.html
Copyright © 2011-2022 走看看