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>. ...
随机推荐
- git 生成秘钥连接远程仓库
二.打开GitBash ,用cd命令进入本地项目目,然后把初始化一下,把本地的目录变成git本地仓库, git status 可以查看本地目录的状态信息 git init git status 三.将 ...
- log4js的简单配置
js记录日志工具log4js,参数请参考官网文档https://log4js-node.github.io/log4js-node/index.html const log4js = require( ...
- Codeforces Round #597 (Div. 2) D. Shichikuji and Power Grid 题解 最小生成树
题目链接:https://codeforces.com/contest/1245/problem/D 题目大意: 平面上有n座城市,第i座城市的坐标是 \(x[i], y[i]\) , 你现在要给n城 ...
- IDEA sql自动补全/sql自动提示/sql列名提示
一.启用idea的database插件 File->Settings->Plugins 搜索Database Tools and SQL 选择Enable 启用或者勾选 二.新建Datab ...
- H3C 以跳数评估的路由并非最优路径
- JVM系统属性 OS环境变量 JVM启动参数
JVM系统属性(System Properties) 1.不支持通过文件查看和设置系统属性 2.可以通过JDK自带的工具jvisulavm.exe查看 3.可以在Java程序中使用API来查看系统属性 ...
- artDialog4.0.5
artDialog4.0.5 2011-08-22 11:54:36 haiwei_sun 阅读数 4109 收藏 更多 分类专栏: jquery 下载 Google Code 项目主页 最新版 ...
- 2019-1-20-VisualStudio-安装-Python-开发
title author date CreateTime categories VisualStudio 安装 Python 开发 lindexi 2019-01-20 10:51:15 +0800 ...
- Linux 内核PCI去除一个设备
一个 PCI 可用多个不同的方法被从系统中去除. 所有的 card-bus 设备在一个不同的物 理因素上是真正的 PCI 设备, 并且内核 PCI 核心不区分它们. 允许在机器运行时加减 PCI 设备 ...
- Java 学习笔记(4)——java 常见类
上次提前说了java中的面向对象,主要是为了使用这些常见类做打算,毕竟Java中一切都是对象,要使用一些系统提供的功能必须得通过类对象调用方法.其实Java相比于C来说强大的另一个原因是Java中提供 ...