template         <         class         Key,         class         T,         class         Cmp=less<key>,        


                  class         A=allocator<pair<         const         Key,T>>        


         class         std::map        


         {        


         public         :        


                  //types        


                  typedef         Key    key_type;        


                  typedef         T    mapped_type;        


                  


                  typedef         pair<         const         Key,T>    value_type;        


                  


                  typedef            Cmp    key_compare;        


                  typedef         A    allocator_type;        


                  


                  typedef            typename            A::reference    reference;        


                  typedef            typename            A::const_reference    const_reference;        


                  


                  typedef            implementation_define1    iterator;        


                  typedef         implementation_define2    const_iterator;        


                  


                  typedef            typename            A::size_type    size_type;        


                  typedef            typename            A::difference_type    difference_type;        


                  


                  typedef            std::reverse_iterator<iterator>    reverse_iterator;        


                  typedef            std::reverse_iterator<const_iterator>    const_reverse_iterator;        


                  //...        


         }


注意:map的value_type是一个(key,value)对,映射值的被认为是mapped_type。因此,一个map是一个pair<const Key,mapped_type>元素的序列。从const Key可以看出,map中键key是不可修改的。



int main() {
    map<string, char> testMap;
    testMap["A"] = 1;
    map<string, char>::mapped_type mapVal = testMap["A"];

    vector<int> testVector;
    testVector.push_back(1);
    vector<int>::value_type vectorVal = testVector[0];

    printf("%d\n", mapVal);
    printf("%d\n", vectorVal);
}



输出1, 1