问题描述
我正在努力解决 C++ 中的 leetcode 问题以供练习。
我遇到了问题 3。我不太明白为什么您可以使用 char
数据类型访问向量。
例如:
vector<int> chars(128);
char c = 'a';
chars[c]++;
我很困惑。我们不应该像使用数字索引访问数组一样访问向量吗?
向量是否隐式地将字符类型转换为十进制?
我们将不胜感激。
解决方法
假设您的系统使用 ASCII 或 UTF-8 或类似格式,'a' == 97
。
所以,这相当于 chars[97]++
。
我们不应该像使用数字索引访问数组一样访问向量吗?
谁告诉你的?向量应该像数组一样被访问。有 std::vector<>::operator[]
和 std::vector<>::at()
用于此
向量是否隐式地将字符类型转换为十进制?
C++ 中没有“十进制”类型。而 std::vector
在这种情况下不做任何事情。 operator[]
接收 size_type
,而 char
可以隐式转换为 size_type
,因此 C++ 会将 c
转换为适当的类型。 char
不用于存储字符。它只是一个数字类型,如 int
或 long
。