C++ ------ const迭代器 和 const_iterator的區別


const迭代器,顧名思義,就是不能改變的迭代器,是常量,其性質是由const決定的。比如說我們這樣定義一個const迭代器。

vector<int> vv(10,9);  
const vector<int> :: iterator iter = vv.begin(); 

則,當程序中出現如下的語句時是錯誤的

++iter;  

其原因是iter是一個常量,因此是不能改變的。換句話說,iter只能指向vv的地一個元素,不能指向其他的元素。

但是這樣的語句是正確的:

*iter = 10;  

因為雖然iter不能指向其他的元素,但是其指向的第一個元素的值是可以改變的。

而對於const_iterator來說的話,正好相反。比如我們這樣定義

vector<int> vv(10,9);  
vector<int> :: const_iterator iter;  

即定義了一個const_iterator迭代器。這個迭代器是可以自己增加的,但是其所指向的元素是不可以被改變的。比如說

for(iter = vv.begin(); iter != vv.end(); ++iter){  
    cout << *iter << endl;  
}  

這樣是正確的,即iter本身的值是可以改變的。但是

for(iter = vv.begin(); iter != vv.end(); ++ iter){  
   *iter = 0;  
}  

這樣是不對的,因為const_iterator迭代器是不能改變其所指向的元素的值的。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM