亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

指針在C和C++ stl的微妙區(qū)別
大家講道理
大家講道理 2016-11-11 13:55:35
0
4
1877

在C語言中,對于指針,有效而正確的用法是保證他指向同一數(shù)組的元素或數(shù)組最后一個元素后端的元素past-end-one,但在C++ stl中由于“逆迭代器”的引入,只是他可以指向數(shù)組第一個元素前一端的元素past-start-one.如:

rend()== begin()-1;

我想問的是為什么他要這樣設(shè)計,打破C語言習(xí)慣有什么更大的好處


大家講道理
大家講道理

光陰似箭催人老,日月如移越少年。

reply all(4)
代言

你這是c語言和c++ with stl的區(qū)別。c++的指針和c沒有任何區(qū)別。

你所謂的

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

c++沒有打破c語言的任何習(xí)慣,只是擴(kuò)展和加強。

你可以完全使用c語言的語法在c++上寫任何c語言可實現(xiàn)的特性。

?????

代言

迭代器和指針并不相等。對迭代器比較大小是不可取的,最好的辦法就是用!=進(jìn)行比較。所以,如果看過STL源碼的話,你會發(fā)現(xiàn)這種設(shè)置非常巧妙而且方便。

代言

這是為了做 != 比較,不然還得讓迭代器支持 >=,

代言

方便你反向循環(huán)訪問啊。
for (it = x.rbegin(); it != x.rend(); --i)
因為每趟循環(huán)后要先進(jìn)行--i,再判斷是不是等于rend()。
不能讓it指向第一個元素就停止循環(huán),那樣第一個元素就沒有被遍歷到了。

Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template