字符串与数组的理解

         学习完了栈与队列之后呢,我们紧接着学习了字符串与数组。关于本章学习的字符串与数组的内容,下面我写一下自己对本章内容的理解。

 

         数组是数据结构中的基本模块之一。因为字符串是由字符数组形成的,所以二者是相似的。数组的很多属性和处理方法在字符串中也是适用的,数组和字符串都属于比较基础的数据结构类型,他们都属于顺序存储结构。顺序存储结构即在内存空间中通过占位的形式,将相同数据类型的一系列数据元素存储到一块连续的内存空间中。

 

一、数组

定义和初始化:

    int a0[5];

    int a1[5] = {1, 2, 3},其余的位置会被默认初始化为0。

 

获取数组长度

        C++的操作中,还有专门获取数组长度的函数:a.size(),返回的是数组的长度。

        size()函数不仅在数组中有所体现,在C++中它适用于很多标准模版,例如vector,string,list等等。

    由于数组属于顺序存储结构,一个数组的数据元素都是连续存储的,所以在知道一个数组的首地址之后,就能够根据某个数据元素在该数组中的位置查找到该数据元素(即数组的索引),从而对其进行读写操作。如a[0]即为索引0对应的元素,就是数组的第一个元素。

   注:数组的索引是从0开始的,数组所能访问到的最大索引为数组的的长度(size())减一。

 

多维数组

 

         此处说说对二维数组的个人理解,三维及三维以上的数组以此类推。

         二维数组可以当作矩阵来看,普通的一维数组其实就是二维数组的一行或者一列。二维数组使用行索引和列索引来访问和遍历数组的每个元素。

        例如:int example[3][6],第一行第一列的元素为example[0][0],第三行第六列元素为 example[2][5],(注:下标是从0开始的)。

        在内存空间中,一维数组是顺序存储结构,相当于数组按照索引顺序在内存地址中依次排列;对于二维数组来说,其存储方式也是顺序存储结构,将二维数组拆分成多行,每一行都是顺序排列,即先存储第一行,再存储第二行,接着存储第三行。。。以此类推,直至存储完所有的二维数组。

 

动态数组

        动态数组即为数组的长度并不是固定的,会根据存储的数据元素而改变的,动态数组的最好的体现我觉得是C++中的vector,它跟普通的数组类似,而且它还有可变长度的优点,都在STL标准模板库中有提现。

 

二、字符串

 

        字符串的操作跟数组的操作是类似的。字符串同样可以进行定义和初始化操作,具体的实现跟数组的是一样的。因为字符串也是顺序存储结构,我们可以把他理解成是数据元素全部为字符类型的数组(字符数组),在C++里面,有专门的字符串数据类型(string,要包含头文件#include<string>)。

 

定义和初始化:

 

    string s1 = "Hello World";     //定义和显示初始化

    string s2 = s1;                        //复制初始化

    string s3(s1);                         //括号复制初始化

 

字符串的比较:

直接进行比较:

    (s1 == "Hello World")

    (s1 == s2) 

    (s1 == s3)

使用compare函数进行比较:

   s1.compare("Hello World") 

   s1.compare(s2) 

   s1.compare(s3) 

 

 

        字符串的长度也是可变的,而且可以使用加减运算符对字符串进行增减:

 

  string s1="hello ";

  string s2="world";

  string s3=s2+s1;       //s3=“hello world”

 

         我所知道的比较好用的还有字符串专门的查找函数:find()和rfind()可以返回需要查找的字符在字符串中的索引。

        int ret=s3.find('o');         //ret=4

其余的我了解的也没有多少高深的内容了,先写这么多,以后有所想再补。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大恐龙的小弟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值