C++ 动态数组与链表

lixianhu1998 2020-01-12 原文

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

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

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

基本的操作:

  1. int a[5]={2,4,6,3,5};
  2. vector<int> s1(a,a+sizeof(a)/sizeof(int));
  3. vector<int> s2(4,88);
  4. int b=s1.at(2);//返回下表为2的元素。
  5. cout<<b<<endl;
  6. cout<<s1.size()<<endl;//返回数组元素的个数
  7. cout<<s1.front()<<endl;//返回首个元素
  8. cout<<s1.back()<<endl;//返回最后一个元素
  9. s1.begin();//返回数组第一个元素的下标。返回的迭代器类型。
  10. s1.end();同上
  11. bool c=s1.empty();//判断数组是否为空,如果为空,则返回true.否则返回false.
  12. cout<<c<<endl;
  13. //s1.clear();//清空数组元素。
  14. //bool c2=s1.empty();
  15. //cout<<c2<<endl;
  16. s1.swap(s2);//交换s1和s2两个数组的元素。
  17. s1.swap(s2);
  18. //for(int i=0;i<s1.size();i++)
  19. // cout<<s1[i]<<" ";
  20. //for(int i=0;i<s2.size();i++)
  21. // cout<<s2[i]<<" ";
  22. s1.push_back(100);//尾部插入一个元素100.
  23. /*for(int i=0;i<s1.size();i++)
  24. cout<<s1[i]<<" ";*/
  25. //s1.insert(s1.begin()+2,3,333);//任意位置插入insert(开始插入的位置,(如果插入相同的数,插入的个数),插入的元素)函数
  26. //for(int i=0;i<s1.size();i++)
  27. // cout<<s1[i]<<" ";
  28. //s1.insert(s1.end(),a,a+sizeof(a)/sizeof(int));//把普通数组加入到s1中。
  29. // for(int i=0;i<s1.size();i++)
  30. // cout<<s1[i]<<" ";
  31. //s1.pop_back();//删除尾部的一个元素。
  32. //s1.erase(s1.begin() +2);//删除s1第三个元素。
  33. //s1.erase(s1.begin() +2 ,s1.end()-2)//删除【s1.begin() +2 ,s1.end()-2】之间的元素,闭合。
  34. //=============================
  35. //代器遍历的方法:
  36. vector<int>::iterator iter;//要定义遍历的数组种类的迭代器,用法相当于指针。
  37. for(iter=s1.begin();iter!=s1.end();iter++)
  38. cout<<*iter<<"--";
  39. cout<<endl;

定义一个链表:

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

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

  1. int a[]={1,2,3,4,5};
  2. list<int> list1(a,a+5);
  3. list1.reverse();//list1中元素倒序
  4. list1.sort();//list1中元素排序,默认是由小到大。
  5. list1.remove(2);//移除某个元素。
  6. list1.push_front(100);//开头插一个元素100.instrt()用法和vector一样。
  7. list1.pop_front()//删除第一个元素。
  8. int ss[4]={7,6,5,4};
  9. list1.insert(list1.begin(),ss,ss+2);//普通数组插入链表中。
  10. //定义迭代器输出链表。
  11. list<int>::iterator itor1 ;
  12. list<int>::iterator itor2;
  13. itor1=list1.begin();
  14. itor2=list1.end();
  15. for(itor1;itor1!=(itor2);++itor1)
  16. {
  17. cout<<*itor1<<endl;
  18. }
发表于
2020-01-12 19:44 
李显虎 
阅读(
评论(
编辑 
收藏

 

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

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

  1. C# 线程的挂起与唤醒 (AutoResetEvent,ManualResetEvent) – jack_Meng

    C# 线程的挂起与唤醒 (AutoResetEvent,ManualResetEvent)      如果说C […]...

  2. C# Winform 拷贝共享文件夹文件包含输入共享用户及密码 – 空白画映

    C# Winform 拷贝共享文件夹文件包含输入共享用户及密码 string filePath = Appli […]...

  3. C++雾中风景17:模板的非推断语境与std::type_identity

    乍一看这个标题很玄乎,但是其实这只是涉及一个很简单的CPP的模板推导的知识点。 笔者近期进行CPP开发工作时, […]...

  4. 借助C++探究素数的分布

    这里使用的区间是36,144,576,2304,9216,36864,147456,589824,235929 […]...

  5. ASP.NET Core 中基于工厂的中间件激活

    IMiddlewareFactory/IMiddleware 是中间件激活的扩展点。 UseMiddlewar […]...

  6. C# 给Word不同页面设置不同背景

    给Word文档设置背景时,通常只能针对整篇文档设置统一的背景,如果需要对某些页面单独设置背景,则需要通过另外的 […]...

  7. (3)微服务 Micro-Service —- Consul服务治理发现

    Consul是注册中心,服务提供者、服务提供者、服务消费者等都要注册到Consul中,这样就可以实现服务提供者 […]...

  8. RDIFramework.NET框架基于Quartz.Net实现任务调度详解及效果展示

    在上一篇Quartz.Net实现作业定时调度详解,我们通过实例代码详细讲解与演示了基于Quartz.NET开发 […]...

随机推荐

  1. 深入剖析共识性算法 Raft

    Raft 出现之前,Paxos 一直是分布式一致性算法的标准。Paxos 难以理解,更难以实现。Raft 的设 […]...

  2. Ubuntu 12.04安装Graphite

    安装必须的软件包 sudo apt-get install libapache2-mod-pythonsudo […]...

  3. Git — 分支与合并 (命令行+可视化工具p4merge)

    基本命令 把所有的变化都放在master分支并不是最好的做法. 建议的做法是把变化放在分支里面. 至少应该准备 […]...

  4. 【已解决】ArcGIS Engine无法创建拓扑的问题(CreateTopology)

      也许,你的问题是这样的 ①System.Reflection.TargetInvocationExcept […]...

  5. Lenovo-ideapad-320S\\_换固态硬盘\\_系统迁移

    由于难以忍受笔记本长达4分钟的开机时间,前几天买固态硬盘换掉了机子的机械盘。在此把经验稍微总结一下,希望帮助同 […]...

  6. 无线定位技术

        实现室内地图定位导航,需要解决哪些技术难题? 2015-06-18 15:00:00 来源: 知乎每日 […]...

  7. Windows Azure NotificationHub+Firebase Cloud Message 实现消息推动(付源码)

    Windows Azure NotificationHub+Firebase Cloud Message 实现 […]...

  8. SQL中convert()函数使用小结

    SQL中convert()函数使用小结 CONVERT(data_type,expression[,style […]...