refactored operator[] with paramenter type difference_type