我正在阅读C++ Primer第五版,遇到了如下的代码:
string s("some string");
if (s.begin() != s.end())
{
auto it = s.begin();
*it = toupper(*it);
}
it
从迭代器接收字符串 s
中第一个字符的值;然后通过 toupper()
将其转换为大写。那么,为什么可以对 it
进行间接引用?它不应该只是一个 char 类型的变量而不是指针吗?
它
应该是一个char
变量?迭代器的行为很像指针,但operator++
被重新定义以允许它们在链表和映射中移动,而不仅仅是数组。 - Ben Voigt