1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
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