迭代器(iterator) 是一種指標類型, 也分const指標本身(地址) 和 const指標所指的值, 兩種情況;
但是寫法和const內建指標有所不同;
char * const 相當於 const container<>::iterator; 可以修改指標所指的值, 但不能修改指標的地址;
const char * 相當於 container<>::const_iterator; 可以修改指標地址, 但不能修改指標所指的值;
注意程式碼範例, 兩種const和迭代器;
代碼:
/* * effectivecpp.cpp * * Created on: 2013.11.13 * Author: Caroline */ /*eclipse cdt ; gcc 4.7.1*/ #include <iostream> #include <vector> int main (void) { std::vector<int> iv = {1, 2, 3, 4, 5}; const auto it = iv.begin(); //const 迭代器 相當於 T* const, 指標自身(地址)是固定的; std::cout << "*it = " << *it << std::endl; //++it; //錯誤 *it = 10; std::cout << "*it = " << *it << std::endl; iv = {1, 2, 3, 4, 5}; auto cit = iv.cbegin(); //cbegin, 相當於const_iterator, 指標所指物是固定的; //std::vector<int>::const_iterator cit = iv.begin(); std::cout << "*cit = " << *cit << std::endl; ++cit; //*cit = 10; //錯誤 std::cout << "*cit = " << *cit << std::endl; return 0; }
作者:csdn部落格 Spike_King
更多精彩內容:http://www.bianceng.cnhttp://www.bianceng.cn/Programming/cplus/