zoukankan      html  css  js  c++  java
  • C++ STL之set的基本操作

    set是集合,虽然也存在键值和实值,不过两者根本就是同一个值,键值的设置完全就是为了满足红黑树的底层结构,set操作与map很像不过也有些不同。

    1、 set迭代器与map的不同:

    (1)set使用接引用运算符*取值,而map使用first和second取值。

    (2)set的迭代器都是常量迭代器,不能用来修改所指向的元素,而map的迭代器是可以修改所指向元素的。

    2、set没有重载[]运算符,而map中重载了,因为直接使用[]改变元素值会打乱原本正确的顺序,要改变元素值必须先删除旧元素,则插入新元素

    3、构造的类型不一样,如同样实值为int类型分别为set<int>和map<type,int>(其中type可以为任意类型)

    其他如插入、删除、查找等操作与map几乎一样

     1 #include<iostream>
     2 #include<set>
     3 using namespace std;
     4 void print(set<int>set_int)
     5 {
     6     set<int>::iterator it=set_int.begin();
     7     for(;it!=set_int.end();it++)
     8     {
     9         cout<<*it<<' ';
    10     }
    11     cout<<endl;
    12 
    13 }
    14 int main()
    15 {
    16     int num[4]={1,2,3,4};
    17     set<int> set_int(num,num+4);
    18 
    19     //元素插入:
    20     //1,插入value,返回pair配对对象,可以根据.second判断是否插入成功。(提示:value不能与set容器内元素重复)
    21     //pair<iterator, bool> insert(value)
    22     //2,在pos位置之前插入value,返回新元素位置,但不一定能插入成功
    23     //iterator insert(&pos, value)
    24     //3,将迭代区间[&first, &last)内所有的元素,插入到set容器
    25     //void insert[&first, &last)
    26     set_int.insert(5);
    27     print(set_int);
    28     set_int.insert(5);
    29     print(set_int);
    30 
    31     //元素删除
    32    //1,size_type erase(value) 移除set容器内元素值为value的所有元素,返回移除的元素个数
    33    //2,void erase(&pos) 移除pos位置上的元素,无返回值
    34    //3,void erase(&first, &last) 移除迭代区间[&first, &last)内的元素,无返回值
    35    //4,void clear(), 移除set容器内所有元素
    36     set_int.erase(3);
    37     print(set_int);
    38 
    39     //元素查找
    40     //count(value)返回set对象内元素值为value的元素个数
    41     //iterator find(value)返回value所在位置,找不到value将返回end()
    42     //lower_bound(value),upper_bound(value), equal_range(value) 
    43     set<int>::iterator it;
    44     it=set_int.find(5);
    45     cout<<*it<<endl;
    46     return 0;
    47 }
  • 相关阅读:
    非常好用的JS滚动代码
    在vs中使用ZedGraph
    通用SQL分页过程
    使用 Request.QueryString 接受参数时,跟编码有关的一些问题
    一个验证Email 的Javascript 函数
    DOS 下将文件名列表写入文件
    .NET 开发人员应该下载的十个必备工具
    中文全文搜索(一)
    关于<![if IE]>
    Lucene 全文索引心得
  • 原文地址:https://www.cnblogs.com/bewolf/p/4422315.html
Copyright © 2011-2022 走看看