迭代器(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