设为首页 加入收藏

TOP

set和multiset的内部结构(二)
2013-05-14 09:22:20 来源: 作者: 【 】 浏览:372
Tags:set multiset 内部 结构


    //访问获取元素;返回值是Type T
    void test2()
    {
    int myint[]={75,23,65,42,13};
    set<int> myset(myint,myint+5);
    cout《*myset.find(65)《endl;//65 //查找元素的位置iterator,若没有此元素,则返回myset.end()(最后一个元素的下一个位置)
    cout《myset.count(65)《endl;//1 查询元素的个数
    }
    //返回迭代器;返回值是iterator,或reverse_iterator
    void test3()
    {
    int myint[]={75,23,65,42,13};
    set<int> myset(myint,myint+5);//初始化:[beg,end)
    for (set<int>::iterator it=myset.begin();it!=myset.end();it++)
    {
    cout《*it《" ";//13 23 42 65 75
    }
    cout《"\nreverse myset:"《endl;
    for (set<int>::reverse_iterator it=myset.rbegin();it!=myset.rend();it++)
    {
    cout《*it《" ";//75 65 42 23 13
    }
    cout《endl;
    }
    //其他
    void test4()
    {
    int myint[]={75,23,65,42,13};
    set<int> myset(myint,myint+5);//初始化:[beg,end)
    set<int>::key_compare com=myset.key_comp();
    set<int>::iterator it=myset.begin();
    int keyHighest=*myset.rbegin();//不能使用*myset.end()
    do
    {
    cout《" "《*it;//13 23 42 65 75
    } while (com(*(it++),keyHighest));
    cout《endl;
    set<int>::value_compare val=myset.value_comp();
    int valHighest=*myset.rbegin();
    it=myset.begin();
    do
    {
    cout《" "《*it;//13 23 42 65 75
    } while (val(*(it++),valHighest));
    cout《endl;
    set<int>::iterator itlows,itups;
    itlows=myset.lower_bound(42);
    itups=myset.upper_bound(42);
    cout《*itlows《" "《*itups《endl;//42 65
    std::pair<set<int>::iterator,set<int>::iterator> pa=myset.equal_range(42);
    cout《"the lower bound point to:"《*pa.first《endl;//42
    cout《"the upper bound point to:"《*pa.second《endl;//65
    //equal_range():返回pair(iterator,iterator),pair中的第一个迭代器是lower_bound()返回的迭代器,pair中的第二个迭代器是upper_bound()返回的迭代器,如果两个迭代器相等,则说明map中不存在这个关键字
    //lower_bound():返回是iterator,返回要查找关键字的下界(是一个迭代器)
    //upper_bound():返回是iterator,返回要查找关键字的上界(是一个迭代器)
    }
    //遍历map中的数据
    void test5()
    {
    //1.使用前向迭代器
    //2.使用相反迭代器
    int myint[]={75,23,65,42,13};
    set<int> myset(myint,myint+5);//初始化:[beg,end)
    for (set<int>::iterator it=myset.begin();it!=myset.end();it++)
    {
    cout《*it《" ";//13 23 42 65 75
    }
    cout《"\nreverse myset:"《endl;
    for (set<int>::reverse_iterator it=myset.rbegin();it!=myset.rend();it++)
    {
    cout《*it《" ";//75 65 42 23 13
    }
    cout《endl;
    }
    void Test(char h)
    {
    cout《"press key===="《h《endl;
    switch(h)
    {
    case '0':  test0();break;
    case '1':  test1();break;
    case '2':  test2();break;
    case '3':  test3();break;
    case '4':  test4();break;
    case '5':  test5();break;
    case 27: 
    case 'q':exit(0);break;
    default:cout《"default "《h《endl;break;
    }
    }
    void main()
    {
    while(1)
    {
    Test(getch());
    }
    }

      

首页 上一页 1 2 3 下一页 尾页 2/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇使用TCP协议实现文件传输 下一篇C/C++语言二维数组的传参方法

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: