使用 char 访问 vector<int>

问题描述

我正在努力解决 C++ 中的 leetcode 问题以供练习。

我遇到了问题 3。我不太明白为什么您可以使用 char 数据类型访问向量。

例如:

vector<int> chars(128);
char c = 'a';
chars[c]++;

上面的代码只是表示在位置 'a'增加向量???由 1.

我很困惑。我们不应该像使用数字索引访问数组一样访问向量吗?

向量是否隐式地将字符类型转换为十进制?

我们将不胜感激。

解决方法

假设您的系统使用 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 不用于存储字符。它只是一个数字类型,如 intlong