You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++中为何可以使用char类型访问vector<int>

char类型可以作为vector下标是C++本身的类型规则决定的,和vector的特殊处理无关,具体逻辑如下:

1 类型本质

C++中的char属于整型家族的基础类型,每个字符值都对应系统字符编码的整数值:比如标准ASCII编码下,'a'对应的整数值就是97,'0'对应的整数值是48。

2 隐式转换规则

std::vector的operator[]接收的参数是size_type类型(本质是无符号整型)。当传入char类型作为下标时,编译器会自动触发隐式整型转换,将char对应的编码整数值转为size_type后再用于下标寻址,和你手动写chars[97]的效果完全一致。

你给出的示例代码等效于如下写法:

vector<int> chars(128);
char c = 'a';
// 隐式转换后等价于执行下面的语句
chars[97]++;

3 常见使用说明

这种写法是算法题中统计字符频率、记录字符出现位置的常用技巧,因为用数组/vector索引寻址的效率远高于哈希表。

注意:部分编译器默认将char作为有符号类型处理,取值范围为-128~127,如果你的场景涉及编码值大于127的扩展字符,直接用char当下标会出现负数越界的问题,建议先强转为无符号char再使用:

chars[static_cast<unsigned char>(c)]++;

另外这种写法同样适用于普通数组,属于C/C++的通用语法规则,不是vector独有的特性。


内容的提问来源于stack exchange,提问作者digdigdoot

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.18 04:36:08