我偶然发现了让我完全困惑的事情.
std::reverse() 将双向迭代器作为函数的参数,但是当我传递指向函数的指针时,它似乎工作正常并且实际上反转了字符串.
void reverseFour(char* str) {
reverse(str, str + strlen(str));
}
int main {
char *str = "hello";
str += '/0';
reverseFour(str);
}
Run Code Online (Sandbox Code Playgroud)
所以,我的问题是,这怎么可能?双向迭代器不是指针,对吧?
在发布此问题之前,我已经完成了我的研究,并确保没有提出类似的问题.
我正在阅读这篇文章http://www.ntu.edu.sg/home/ehchua/programming/cpp/cp10_io.html关于C++中的流,并且我在蓝色中注意到的链接图中有basic_iostream,在它下面绿色是iostream,basic_ifstream和ifstream等同样如此,
从我读到的是basic_iostream是一个模板类,iostream是basic_iostream的实例,但这是什么意思?
iostream不是像cout,cin和cerr这样的对象,那么它是如何实例化的呢?