Tricks(十七) —— 数组与字典(map)

57 篇文章 0 订阅
  • (1)数组也能实现一种映射(map),将下标映射为下标对应的值,数组和字典甚至映射的形式都是一样的,都是使用中括号。

    arr[0] = 1;
    m["InsideZhang"] = 23;
  • (2)数组能做的事,字典都能完成;而字典能做的事,数组却未必能。也即数组是 key 受限(必须为无符号整型)的字典。或者说字典是下标增强的数组。

  • (3)下标之于数组,如同 key 之于字典,不过数组的下标只可以是无符号整型,字典的 key 却可以是任意类型;

  • (4)下标对数组而言是独一无二的,不可能有两个一样的索引却指向不同的值,多个下标却可以对应相同的值。字典的 key 也是唯一的,不同的 key 也可以对应相同的 value。

    arr[i] == arr[j]
  • (5)数组与字典的另外一点不同是,数组的下标是连续的,因为数组本身即占据着一段连续的线性空间。我们只需知道数组长度(n),即可获悉其全部合法的下标,0… n-1. 而字典对下标没有任何如此的要求,这当然也与其内存结构有关了,字典对下标(key)的全部要求正在于不允许重复(也不要求一个key对应多个value)。

1. 推论

a[-1] ?

至少存在这样的推论,如果索引需要为负(a[-1] ?)时,怎么办。此时数组是束手无策的,而只能使用字典。

或者,当你看到以负数为索引,那很大的可能即是,该对象是字典类型。

2. 等价

  • int arr[m][n] 等价于 map<pair<int, int>, int>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

五道口纳什

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

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

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

打赏作者

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

抵扣说明:

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

余额充值