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