指针在C和C++ stl的微妙区别

浏览:29日期:2023-06-07

问题描述

在C语言中,对于指针,有效而正确的用法是保证他指向同一数组的元素或数组最后一个元素后端的元素past-end-one,但在C++ stl中由于“逆迭代器”的引入,只是他可以指向数组第一个元素前一端的元素past-start-one.如:

rend()== begin()-1;

我想问的是为什么他要这样设计,打破C语言习惯有什么更大的好处

问题解答

回答1:

你这是c语言和c++ with stl的区别。c++的指针和c没有任何区别。

你所谓的

rend()== begin()-1;并不是c++的指针,而是stl的`迭代器`。这个和指针不是相同的概念。

c++没有打破c语言的任何习惯,只是扩展和加强。

你可以完全使用c语言的语法在c++上写任何c语言可实现的特性。

回答2:

迭代器和指针并不相等。对迭代器比较大小是不可取的,最好的办法就是用!=进行比较。所以,如果看过STL源码的话,你会发现这种设置非常巧妙而且方便。

回答3:

这是为了做 != 比较,不然还得让迭代器支持>=,

相关文章: