• 关于map与set的一点理解;


    set代码:

     1 #include<stdio.h>
     2 #include<set>
     3 using namespace std;
     4 int main(){
     5  set<int>m;
     6  set<int>::iterator iter;
     7  set<int>::iterator fir,sec; 
     8  for(int i=15;i>=0;i-=2)m.insert(i);//set二分排序,且无重复,begin返回开始地址,值为第一个元素的值,end返回最后一个位置的地址,值等于 size的值;count计数值为0或1,iterator接口类似point; 
     9  m.insert(15);m.insert(15);m.insert(15);
    10  printf("size=%d
    begin=%d
    end=%d
    count(14)=%d
    count(15)=%d
    ",m.size(),*m.begin(),*m.end(),m.count(14),m.count(15));
    11  for(iter=m.begin();iter!=m.end();iter++)printf("%d ",*iter);//!=换成<就错了;iterator为接口;
    12  puts("");
    13  pair<set<int>::const_iterator,set<int>::const_iterator>x;
    14  x=m.equal_range(5);/*equal_range() ,返回一对定位器,分别表示*第一个大于或等于*给定关键值的元素和 *第一个大于*给定关键值的元素,
    15  这个返回值是一个(pair)类型,如果这一对定位器中哪个返回失败,就会等于end()的值。*/
    16  printf("%d %d
    ",*x.first,*x.second);//结果为 5 7 如果x=m.equal_range(4)则结果为5 5; 
    17  m.erase(x.first,x.second);//erase(iterator)  ,删除定位器iterator指向的值;里面也可为一个值;erase(a,b)删除first和second之间的值;a,b为迭代器类型; 自我感觉像free 
    18   //equal_range函数没什么用,想找的话,可以自己定义一个迭代器,然后通过下列方法找;; 
    19    for(int i=15;i>=0;i-=2)m.insert(i);
    20   fir=m.begin();sec=m.begin();
    21   for(fir,sec;fir!=m.end();fir++,sec++){
    22    if(*fir>=5){ printf("%d
    ",*fir);
    23    if(*sec>5)printf("%d
    ",*sec);
    24    else printf("%d
    ",*(++sec)); 
    25    break;
    26    } 
    27   }
    28  return 0;
    29 }
    View Code

     map代码:

     1 #include<cstdio>
     2 #include<iostream>
     3 #include<map>
     4 #include<string>
     5 using namespace std;
     6 int main(){
     7     map<int,string>student;
     8     map<int,string>::iterator iter;
     9     map<int,string>::iterator fir,sec;
    10     student.insert(pair<int,string>(123456789,"Mike"));
    11     student.insert(pair<int,string>(123456789,"MiKE"));
    12     student.insert(pair<int,string>(123456790,"jane"));
    13     student.insert(pair<int,string>(123456791,"kang"));
    14     student.insert(pair<int,string>(123456792,"Rose"));
    15     student[123456793]="reder";
    16     student[123456793]="Red";
    17     cout<<"数据:"<<endl;
    18         for(iter=student.begin();iter!=student.end();iter++)cout<<iter->first<<" "<<iter->second<<endl;
    19     cout<<"find与count的使用"<<endl;
    20     if(student.find(123456791)!=student.end())cout<<student.find(123456791)->second<<endl;//find能定位要查找元素的位置。有一点需要注意的是查找的参数是键值!!
    21     if(student.count(123456792))cout<<student.count(123456792)<<endl;//count只能单纯的查找元素是否存在, 
    22     iter=student.begin();
    23     student.erase(iter);cout<<"删除首位:"<<endl; 
    24     for(iter=student.begin();iter!=student.end();iter++)cout<<iter->first<<" "<<iter->second<<endl;
    25     student.erase(123456791);
    26     cout<<"键值删除:"<<endl;
    27     for(iter=student.begin();iter!=student.end();iter++)cout<<iter->first<<" "<<iter->second<<endl;
    28     fir=student.begin();sec=student.end();
    29     student.erase(fir,sec);//或student.clear();
    30     cout<<"利用迭代器范围删除所有数据"<<endl;
    31     if(student.empty())puts("all empty");
    32     return 0;
    33 }
    View Code
  • 相关阅读:
    hdu 1240 Asteroids!
    hdu 1253 胜利大逃亡
    hdu 1035 Robot Motion
    hdu 1181 变形课
    hdu 1548 A strange lift
    DFS Sum It Up
    hdu 3278 Catch That Cow
    hdu 1312 Red and Black
    ACM菜鸟
    eclipse新建安卓项目点击finish后窗口无法关闭
  • 原文地址:https://www.cnblogs.com/handsomecui/p/4680036.html
Copyright © 2020-2023  润新知