search
  • Sign In
  • Sign Up
Password reset successful

Follow the proiects vou are interested in andi aet the latestnews about them taster

4 answers
Q&A 指针在C和C++ stl的微妙区别
指针在C和C++ stl的微妙区别
大家讲道理 2016-11-11 13:55:35 Views 1951
Go

0

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

rend()== begin()-1;

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


Your Answer
submit

4 answers
0

方便你反向循环访问啊。
for (it = x.rbegin(); it != x.rend(); --i)
因为每趟循环后要先进行--i,再判断是不是等于rend()。
不能让it指向第一个元素就停止循环,那样第一个元素就没有被遍历到了。

2016-11-11 13:55:55

submit

0

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

2016-11-11 13:56:02

submit

0

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

2016-11-11 13:56:09

submit

0

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

你所谓的

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

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

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

     

2016-11-11 13:56:22

submit

Popular tool

vc9-vc14 (32+64 bit) runtime library collection (link below)

vc9-vc14 (32+64 bit) runtime library collection (link below)

Download the collection of runtime libraries required for phpStudy installation

VC9 32-bit

VC9 32-bit

VC9 32-bit phpstudy integrated installation environment runtime library

PHP programmer toolbox full version

PHP programmer toolbox full version

Programmer Toolbox v1.0 PHP Integrated Environment

VC11 32-bit

VC11 32-bit

VC11 32-bit phpstudy integrated installation environment runtime library

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use