C++ 动态数组与链表

lixianhu1998 2020-01-12 原文

C++ 动态数组与链表

动态数组与链表


动态数组的大小不定,内存连续的,可以根据自己的需要,增加或删除元素。知道第一个元素的,那么就可以知道第二个元素,通过下标访问。如果中间插入一个元素,那么中间后面的元素的下标全部都要改变。
使用前记得引如#include
链表是一个一个结点在内存中离散的分布。各个结点之间通过元素内部的指针实现的。要查找中间某个元素,必须从第一个元素开始一部一步遍历 ,使用之前记得 #include

*定义一个动态数组(方法很多,这里不多说,自己百度):

    int a[5]={2,4,6,3,5};
    vector<int>  s1(a,a+sizeof(a)/sizeof(int));//int类型的数组,通过一般数组导入方法。
    vector<int>  s2(4,88);//定义s2(元素个数,元素值)

基本的操作:

    int a[5]={2,4,6,3,5};
    vector<int>  s1(a,a+sizeof(a)/sizeof(int));
    vector<int>  s2(4,88);
    int b=s1.at(2);//返回下表为2的元素。
    cout<<b<<endl;
    cout<<s1.size()<<endl;//返回数组元素的个数
    cout<<s1.front()<<endl;//返回首个元素
    cout<<s1.back()<<endl;//返回最后一个元素
    s1.begin();//返回数组第一个元素的下标。返回的迭代器类型。
    s1.end();同上
    bool c=s1.empty();//判断数组是否为空,如果为空,则返回true.否则返回false.
    cout<<c<<endl;
    //s1.clear();//清空数组元素。
    //bool c2=s1.empty();
    //cout<<c2<<endl;
    s1.swap(s2);//交换s1和s2两个数组的元素。
    s1.swap(s2);
    //for(int i=0;i<s1.size();i++)
    //  cout<<s1[i]<<"   ";

    //for(int i=0;i<s2.size();i++)
    //  cout<<s2[i]<<"   ";
    s1.push_back(100);//尾部插入一个元素100.
    /*for(int i=0;i<s1.size();i++)
        cout<<s1[i]<<"   ";*/
    //s1.insert(s1.begin()+2,3,333);//任意位置插入insert(开始插入的位置,(如果插入相同的数,插入的个数),插入的元素)函数
    //for(int i=0;i<s1.size();i++)
    //  cout<<s1[i]<<"   ";
    //s1.insert(s1.end(),a,a+sizeof(a)/sizeof(int));//把普通数组加入到s1中。
    //  for(int i=0;i<s1.size();i++)
    //  cout<<s1[i]<<"   ";
    //s1.pop_back();//删除尾部的一个元素。
    //s1.erase(s1.begin() +2);//删除s1第三个元素。
    //s1.erase(s1.begin() +2 ,s1.end()-2)//删除【s1.begin() +2 ,s1.end()-2】之间的元素,闭合。
//=============================
//代器遍历的方法:
   vector<int>::iterator iter;//要定义遍历的数组种类的迭代器,用法相当于指针。
    for(iter=s1.begin();iter!=s1.end();iter++)
        cout<<*iter<<"--";
        cout<<endl;


定义一个链表:

    int a[]={1,2,3,4,5};
    list<int> list1(a,a+5);//通过普通数组导入链表

链表的基本操作:
基本操作和动态数组一样,在此基础上增加了。

    int a[]={1,2,3,4,5};
    list<int> list1(a,a+5);
    list1.reverse();//list1中元素倒序
    list1.sort();//list1中元素排序,默认是由小到大。
    list1.remove(2);//移除某个元素。
    list1.push_front(100);//开头插一个元素100.instrt()用法和vector一样。
    list1.pop_front()//删除第一个元素。
     int ss[4]={7,6,5,4};
     list1.insert(list1.begin(),ss,ss+2);//普通数组插入链表中。
     //定义迭代器输出链表。
    list<int>::iterator  itor1 ;
    list<int>::iterator itor2;
    itor1=list1.begin();
    itor2=list1.end();
    for(itor1;itor1!=(itor2);++itor1)
    {
        cout<<*itor1<<endl;

    }
    
发表于
2020-01-12 19:44 
李显虎 
阅读(
评论(
编辑 
收藏

 

版权声明:本文为lixianhu1998原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/lixianhu1998/p/12184455.html

C++ 动态数组与链表的更多相关文章

  1. C# 从1到Core–委托与事件

      委托与事件在C#1.0的时候就有了,随着C#版本的不断更新,有些写法和功能也在不断改变。本文温故一下这些改 […]...

  2. 关于轮询与长轮询的分享

    一、轮询   1、轮询(Polling)是一种CPU决策如何提供周边设备服务的方式,又称“程控输入输出”(Pr […]...

  3. iOS开发 – 3D Touch 应用系列一 – Quick Actions 创建桌面 Icon 快捷方式

    个言 很久没发随笔了,有一年多了吧。期间也曾想继续去写随笔,但是因为各种原因而耽搁了。最近又想了一下,还是有很 […]...

  4. windows 驱动开发 MDL 内核层 用户层共享内存

    参考资料    https://blog.csdn.net/wdykanq/article/details/7 […]...

  5. c/c++排坑(5) — c语言中的申明

    C语言的申明总是令人头大,对于这块内容也一直让我头疼。希望通过这篇博客能够稍微梳理一下。材料和例子来源于《C专 […]...

  6. c++入门笔记

    对于有java基础的人来说,学习c++并不难,毕竟c++是java的前身。 何况还熟练掌握了java呢,哈哈。 […]...

  7. C++单线程智能指针实现 C++ 引用计数技术及智能指针的简单实现

    转自 https://www.cnblogs.com/QG-whz/p/4777312.html <di […]...

  8. Visual C++ MFC 中常用宏的含义

    Visual C++ MFC 中常用宏的含义 AND_CATCHAND_CATCH AND_CATCH(exc […]...

随机推荐

  1. OpenCV开发笔记(七十三):红胖子8分钟带你使用opencv+dnn+yolov3识别物体

      前言   级联分类器的效果并不是很好,准确度相对深度学习较低,上一章节使用了dnn中的tensorflow […]...

  2. (转)unity中基于alpha通道的shadow volume实现

    转自:http://blog.163.com/wmk_2000_ren/blog/static/1388461 […]...

  3. 程序开机自动运行的方法

    (转自:http://blog.csdn.net/liuzijing688/article/details/4 […]...

  4. SharePoint2010安装错误信息描述 – 糖糖分你一半

      SharePoint2010安装不下20遍了,从win7到2008R2,从单机到域环境,把场模式,单机模式 […]...

  5. 新浪微博登陆以及发送微博(附python源码)

    本文主要记录分析新浪微博登陆以及发送文字和图片微博的详细过程 原文链接(本人):https://blog.cs […]...

  6. 图像增强:直方图均衡和小波变换【matlab】

      直方图均衡:统计图像像素灰度的直方图分布。对其进行重新分配以使图像的直方图分布更加均衡。        小 […]...

  7. 一句话讲清楚什么是JavaEE

    Java技术不仅是一门编程语言而且是一个平台。同时Java语言是一门有着特定语法和风格的高级的面向对象的语言, […]...

  8. Django 学习第七天——Django模型基础第二节

    User 是自己创建的模型类,等于数据库中的表 常用的查询方法:   all():获取所有数据: User.o […]...

展开目录

目录导航