C++:数组、链表与哈希表

自我介绍一下个人情况:我对C++属于初学者,没有做过C++写的项目,只在菜鸟教程粗略过了一遍C++的基本概念。我刷题准备用的是C++语言,打算分类刷题,每次刷题前我都会补习相应的C++知识,顺便在此记录。文章目录数组和链表数组什么是数组?访问数组元素可变长的动态数组:vectorVector基本用法链表什么是链表?链表的操作双向链表(list)list的成员函数总结数组和链表C++的数组和链表分别是什么?分别有什么种类?它们都有什么特性?针对这些特征,使用情形是什么?数组什么是数组?
摘要由CSDN通过智能技术生成


数组和链表

C++的数组和链表分别是什么?分别有什么种类?它们都有什么特性?针对这些特征,使用情形是什么?

数组

什么是数组?

一个数组就像是一个变量,它可以存储一组值,但是所有值都是相同的数据类型。

一个int数组定义:int hours [6]
该数组类型为int型,即存储元素是整数。
该数组的名称是hours,方括号内为数组的大小,它表示数组可以容纳的元素或值的数量,必须是一个常量整数,其值大于0.(也可以是命名常数)
初始化数组:int hours[6] = { 1, 2, 3, 4, 5, 6}.

访问数组元素

数组的元素可以根据下标作为单独的变量进行访问和使用,C++中的下标编号从0开始,数组中最后一个元素的下标比数组中元素的总数少1.
如果采用全局定义的方式定义一个包含数值的数组,则默认情况下,所有元素初始化为0.但是,如果定义的是局部变量,则没有默认的初始值。

上面hours数组的每个元素在被下标访问时都可以用做int变量赋值:hours[0] = 20

可变长的动态数组:vector

vector是顺序容器的一种,是可变长的动态数组。所以vector具备数组的性质:在vector容器中,根据下标随机访问某个元素的时间是常数,在尾部添加一个元素的时间大多数情况也是常数。
但是,在中间插入或删除元素,需要移动多个元素,速度较慢,平均花费时间和容器中的元素个数成正比。

Vector基本用法
成员函数 作用
vector() 无参构造函数,将容器初始化为空
vector(int n) 将容器初始化为有n个元素
vector(int n, const T &val) 假定元素类型为T,将容器初始化为有n个元素,每个元素的值都是val
vector(iterator first, iterator last) first,last可以是其他容器的迭代器。一般来说,本构造函数的初始化结果就是将vector容器的内容变成与其他容器上的区间[first,last)一致
void clear() 删除所有元素
bool empty() 判断容器是否为空
void pop_back() 删除容器末尾的元素
void push_back(const T &val) 将val添加到容器末尾
int size() 返回容器中元素的个数
T & front() 返回容器中第一个元素的引用
T & back() 返回容器中最后一个元素的引用
iterator insert(iterator i, const T &val) 将val插入迭代器i指向的位置,返回i
iterator insert(iterator i, iterator first, iterator last) 将其他容器上的区间[first,last)中的元素插入迭代器i指向的位置
iterator erase(iterator i) 删除迭代器i指向的元素,返回值是被删元素后面的元素的迭代器
iterator erase(iterator first, iterator last) 删除容器中的区间[first, last)
void swap(vector < T > &v) 将容器自身的内容和另一个同类型的容器v互换
#include <vector>
using namespace std;
int main(){
   
	int a[5] = {
   1, 2, 3, 4, 5}
	vector <int> v(a, a+5); //将数组a的内容放入v
	cout << v.end() - v.begin() << endl; //两个迭代器相减,输出:5
	v.insert(v.begin()+2, 13); // 在begin()+2 位置插入13, v变为:1,2,13,3,4,5
	v.eraser(v.begin()+2); // 删除位于begin()+2 位置上的元素,v变为:1,2,3,4,5
	vector <int> v2(4, 100); // v2有4个元素,都是100
	v2.insert(v2.begin(), v.begin() + 1,</
  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值