【发布时间】:2021-06-06 03:18:42
【问题描述】:
我正在通过 C++ 中的 leetcode 问题进行练习。
我遇到了第 3 个问题。我不太明白为什么您可以使用 char 数据类型访问向量。
例如:
vector<int> chars(128);
char c = 'a';
chars[c]++;
上面的代码只是意味着增加位置'a'处的向量??? 1.
我很困惑。难道我们不应该使用数字索引来访问像数组一样的向量吗?
向量是否将 char 类型隐式转换为十进制?
我们将不胜感激。
【问题讨论】:
-
因为
char是整数类型,就像int、unsigned、long等一样。所有整数类型都可以隐式转换为无符号整数类型(通常为std::size_t),用于在标准容器中进行索引,例如std::vector。请记住,char文字的值(如'a')是实现定义的,但在任何标准化字符集中都不是零或一(例如,它在与 ASCII 兼容的字符集中具有值97)和访问容器具有超出范围索引的元素会产生未定义的行为。
标签: c++ vector addressing