C++ 动态数组与链表
动态数组与链表
动态数组的大小不定,内存连续的,可以根据自己的需要,增加或删除元素。知道第一个元素的,那么就可以知道第二个元素,通过下标访问。如果中间插入一个元素,那么中间后面的元素的下标全部都要改变。
使用前记得引如#include <vector>
链表是一个一个结点在内存中离散的分布。各个结点之间通过元素内部的指针实现的。要查找中间某个元素,必须从第一个元素开始一部一步遍历 ,使用之前记得 #include <list>
*定义一个动态数组(方法很多,这里不多说,自己百度):
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;
}
C++ 动态数组与链表的更多相关文章
- Delphi 的动态数组
传统的Pascal 语言其数组大小是预先确定的,当你用数组结构声明数据类型时,你必须指定数组元素的个数.专业程序员也许知道些许动态数组的实现技术,一般是采用指针,用手工分配并释放所需的内存. Delp ...
- 数组、链表、栈、队列和STL
数组 数组是一种最基本的数据结构,它是内存上的一块连续存储空间.正因如此数组的随机访问很方便.但数组也有其固有的限制,大小分配后不能改变. STL中的数组 STL中的Array是静态数组模板,就是我们 ...
- 动手编写—动态数组(Java实现)
目录 数组基础回顾 自定义动态数组 动态数组的设计 抽象父类接口设计 抽象父类设计 动态数组之DynamicArray 补充数组缩容 全局的关系图 声明 数组基础回顾 1.数组是一种常见的数据结构,用 ...
- vc++基础班[28]---动态数组及动态链表的讲解
C++中也有相应的动态数组.动态链表.映射表的模板类,就是STL中的:vector.list.map 他们属于C++标准中的一部分,对于程序的移植性来说也是不错的,但是在MFC编程中使用 CArray ...
- 数据结构(1) 第一天 算法时间复杂度、线性表介绍、动态数组搭建(仿Vector)、单向链表搭建、企业链表思路
01 数据结构基本概念_大O表示法 无论n是多少都执行三个具体步骤 执行了12步 O(12)=>O(1) O(n) log 2 N = log c N / log c N (相当于两个对数进行了 ...
- 常用数据结构-线性表及Java 动态数组 深究
[Java心得总结六]Java容器中——Collection在前面自己总结的一篇博文中对Collection的框架结构做了整理,这里深究一下Java中list的实现方式 1.动态数组 In compu ...
- PHP内核探索:数组与链表
在C语言中,我们可以自定义各种各样的数据结构,用来把很多数据保存在一个变量里面,但是每种数据结构都有自己的优缺点,PHP内核规模如此庞大,是否已经找到了一些非常棒的解决方法呢? 我们在选择各种数据结构 ...
- 线性表之顺序存储结构(C语言动态数组实现)
线性表的定义:N个数据元素的有限序列 线性表从存储结构上分为:顺序存储结构(数组)和 链式存储结构(链表) 顺序存储结构:是用一段连续的内存空间存储表中的数据 L=(a1,a2,a3....an) 链 ...
- QVector<QString> 显示器里面的动态数组元素QString和char *转变
QVector类是一类提供了动态数组模板. QVector<T>是Qt普通容器类的一种. 它将自己的每个对象存储在连续的内存中.能够使用索引號来高速訪问它们.QList<T>. ...
随机推荐
- kwargs.pop是什么意思
pop()函数一般用来删除list列表的末尾元素,同样,kwargs.pop()用来删除关键字参数中的末尾元素,比如:kwargs = {'Michael': 95, 'Bob': 75, 'Trac ...
- SpringBoot使用logback输出日志并打印sql信息 --经典---
最近在学习springboot以及一些springcloud插件的使用,其中发现默认的配置并不能打印一些有用的日志,所以需要自定义一些日志输出方式以便于查看日志排查问题,目前只整理了两种使用方式,如下 ...
- Java RandomAccessFile用法(转载)
RandomAccessFile RandomAccessFile是用来访问那些保存数据记录的文件的,你就可以用seek( )方法来访问记录,并进行读写了.这些记录的大小不必相同:但是其大小和位置必须 ...
- POJ 2406 Power Strings next数组循环节应用、
题意:就给出个字符串做*的定义.a^0 = "" (the empty string) and a^(n+1) = a*(a^n). 题目要求n的最大值. 思路: 化简上面的 ...
- Array.from()类数组转化为数组的用法
类数组对象转化为数组 let arrayLike = { '0': 'a', '1': 'b', '2': 'c', length: 3 }; let arr = Array.from(arrayLi ...
- 困扰的问题终于解决了-docker时区不正确的问题修改记
前一阵子有一台服务器,mysql的时间比北京时间晚了8个小时.我知道是时区的问题,但是不知道为什么弄成这样,宿主机没有问题,后来一看mysql的docker,时区是错的. mybatis-plus打印 ...
- H3C 在网络中的正确位置配置ACL包过滤
- Python--day61--Django项目配置相关
static文件查找:
- Python--day31--黏包(不熟...)
- Spring Data JPA坑点记录
本篇进行Spring-data-jpa的介绍,几乎涵盖该框架的所有方面,在日常的开发当中,基本上能满足所有需求.这里不讲解JPA和Spring-data-jpa单独使用,所有的内容都是在和Spring ...