const 与 迭代器(iterator) 使用 详解

 

 

本文地址:

 

迭代器(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 
#include
int main (void) { std::vector
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
::const_iterator cit = iv.begin(); std::cout << "*cit = " << *cit << std::endl; ++cit; //*cit = 10; //错误 std::cout << "*cit = " << *cit << std::endl; return 0; }