[cpp32 note] 5. 容器2

C++中的C数组在没有size成员函数时会导致信息丢失,cpp17引入的std::size可解决此问题。C数组不适合作为map的key,因为它们不支持良好复制。对于不同场景,可以考虑使用vector或array作为替代:vector适用于动态大小,array适合栈上分配并提供迭代器和size方法。
摘要由CSDN通过智能技术生成
c数组:

没有size成员函数
作为参数时有退化行为,传递后函数内部无法获得c数组长度和结束位置

cpp17后提供了std::size()方法,可以获取c数组的长度。并且在数组退化时使用会编译报错。

c数组没有良好的复制行为,无法作为map之类容器的key。

c数组的替代品:

如果不使用c数组:

  1. 数组大的情况,可以使用vector
  2. 字符串数组,使用string
  3. 数组大小固定、且大小较小的情况下,应该考虑array
array:

array保留了c数组在栈上分配的特点,还提供了begin、end、size等通用成员函数。
array还支持作为map的key。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值