const iteratorとconst_iteratorの違い


  • const iteratorはポインタ定数に相当します.すなわち,ポインタ自体は定数であり,ポインタ自体は修正不可能であり,他の要素を指すことはできないが,コンテンツを指すことは修正可能である.
  • const_iteratorは定数ポインタに相当します.すなわち、ポインタが指す内容は定数であり、ポインタ自体は変更可能であり、他の要素を指すが、ポインタが指す内容は変更できない.

  • 例を次に示します.
    #include 
    #include 
    
    int main()
    {
    	std::vector v{1,3,5,7,9};
    
    	const std::vector::iterator iter_const = v.begin();
    	
    	iter_const++;   //   : iter_const     int* const   ,      
    	
    	*iter_const = 50; //   :         
    
    	std::vector::const_iterator const_iter = v.begin();
    	
    	*const_iter = 50;   //   : const_iter    const int *   ,        
    	
    	++const_iter;       //   :      
    
    	return 0;
    }