C++基础容器


从0开始,使用非对称区间

重学C++_基础容器

序列容器 -- 数组

序列型容器 -- 数组

概念

  • 代表内存里一组连续的同类型存储区
  • 可以用来把多个存储区合并成一个整体

数组声明

  • int arr[10];
  • 类型名称int表示数组里所有元素的类型
  • 名称arr是数组的名称
  • 整数10表示数组里包含的元素个数
  • 数组里元素个数不可以改变

数组

使用

  • 每个元素都有下标,通过下标可以直接访问任意一个元素
  • 下标从0开始到元素个数减一为止
  • 超过范围的下标不可以使用
  • 数组名称和下标一起可以表示数组里的元素 a[4]

优点

  • 可以编写循环依次处理数组里的所有元素
  • 循环变量依次代表所有有效下标
for(int index = 0; index<len; ++index)
{
    cout << arr[index] << endl;
}

数组_续

  • 下标标识了一个数组元素在当前数组容器中的位置。
int arr[10] = {1,2,3,4,5,6,7,8,0,0};
for(int index = 0; index<10; ++index)
{
    cout << arr[index] << " ";
}

考虑一个问题:100米,每10米需要一个栏杆,总共需要多少个栏杆?

off-by-one error(差一错误) _ 数组下标

off-by-one error(差一错误)

一个简单的问题:假定整数x满足边界条件x>=16并且x<= 37,那么此范围内x的可能取值个数有多少?

使用数学上的左闭右开区间[,)来表示范围

在C++中,我们一般使用下面的方式对数组进行遍历

for(int index = 0; index<10; ++index)
{
    cout << a[index] << " ";
}

而不是

for(int index = 0; index<9; ++index)
{
    cout << a[index] << " ";
}

设计数组下标的原则

  • C语言中设计数组下标的原则:从0开始,使用非对称区间

    • 让这个区间是一个非对称的区间[,)
    • 让下界(左侧)可以取到值,让上界(右侧)取不到值
  • 这样设计的好处:
  1. 取值范围的大小:上界 - 下界

    1. 如果这个取值范围为空,上界值 = 下界值

      1. 即使取值范围为空,上界值永远不可能小于下界值

数组增删改查及二维数组

动态数组Vector

字符串简介

Unicode编码

字符串的指针表示

字符串基本操作

string的简介

声明:三二一的一的二|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接 - C++基础容器


三二一的一的二