STL源码分析

来源:互联网 发布:say it again frances 编辑:程序博客网 时间:2024/05/16 05:23

map的特性是:
所有元素都会根据元素的键值自动被排序,map的所有元素都是pair,同时拥有实值和键值。pair的第一元素被视为键值,第二元素被视为实值。map不允许两个元素拥有相同的键值。

template<class T1,class T2>struct pair{    typedef T1 first_type;    typedef T2 scond_type;    T1 forst;    T2 second;    pair() :first(T1()), second(T2()){}    pair(const T1& a, const T2& b) :first(a), second(b){}};

测试程序

#include<map>#include<iostream>#include<string>using namespace std;int main(){    map<string, int> simap;    simap[string("jjhou")] = 1;    simap[string("jerry")] = 2;    simap[string("jason")] = 3;    simap[string("jimmy")] = 4;    pair<string, int> value(string("david"), 5);    simap.insert(value);    map<string, int>::iterator simap_iter = simap.begin();    for (; simap_iter != simap.end(); ++simap_iter)    {        cout << simap_iter->first << ' ' << simap_iter->second << endl;    }    int number = simap[string("jjhou")];    cout << number << endl;    map<string, int>::iterator ite1;    //面对关联式容器,应该使用其所提供的find函数;爱搜寻元素,回避使用STL算法find()更有效率,    ite1 = simap.find(string("mchen"));    if (ite1 == simap.end())        cout << "mchen not found" << endl;    ite1 = simap.find(string("jerry"));    if (ite1 != simap.end())        cout << "jerry found" << endl;    ite1->second = 9;//可以通过map迭代器修改“value”    int number2 = simap[string("jerry")];    cout << number2 << endl;    return 0;}
原创粉丝点击