STL中的平衡二叉树(multiset set)

multiset set multimap map
#include <set> //使用multiset和set需要此头文件 

可在增加和删除数据的基础上查找数据。

multiset用法
multiset<T> st;  
定义了一个multiset变量st,st里面可以存放T类型的数据,并且能自 动排序。开始st为空

 

 size() 返回容器中元素的数目
 empty()

 判断容器收为空

insert(elem)在容器中插入元素。
clear()清除所有元素
erase(pos)删除pos迭代器所指的元素,返回下一个元素的迭代器
erase(beg, end)删除区间[beg,end)的所有元素 ,返回下一个元素的迭代器
erase(elem)删除容器中值为elem的元素

 

 

 

 

 

 

 

 

find(key)查找键key是否存在,若存在,返回该键的元素的迭代器;若不存在,返回set.end()
count(key)查找键key的元素个数
lower_bound(keyElem)返回最后一个key<=keyElem元素的迭代器
upper_bound(keyElem)返回第一个key>keyElem元素的迭代器
equal_range(keyElem)返回容器中key与keyElem相等的上下限的两个迭代器,这两个迭代器被放在对组(pair)中

分类: C/C++

 

 

 

multiset 上的迭代器
multiset<T>::iterator p;  
p是迭代器,相当于指针,可用于指向multiset中的元素。访问multiset中的元素要通 过迭代器。
与指针的不同:
multiset上的迭代器可 ++ ,--, 用 != 和 == 比较,不可比大小,不可加减整数,不 可相减
multiset<T> st;
st.begin() 返回值类型为 multiset<T>::iterator, 是指向st中的头一个元素的迭代器
st.end() 返回值类型为 multiset<T>::iterator, 是指向st中的最后一个元素后面的迭代器
对迭代器 ++ ,其就指向容器中下一个元素,-- 则令其指向上一个元素
 

 

set 与multiset唯一的不同是set容器里不能有重复元素

 

#include <iostream>
 #include <cstring>
 #include <set>
 using namespace std;
 int main() { 
    set<int> st; 
    int a[10] ={ 1,2,3,8,7,7,5,6,8,12 };
    for(int i = 0;i < 10; ++i) 
        st.insert(a[i]); 
    cout << st.size() << endl;  //输出:8 
    set<int>::iterator i; 
    for(i = st.begin(); i != st.end(); ++i)
       cout << * i << ","; //输出:1,2,3,5,6,7,8,12, 
    cout << endl; 

    pair<set<int>::iterator, bool>                                                               
r
esult =  st.insert(2);                                                                                          pair<set<int>::iterator, bool> 等于
                                                                                                                               struct { set<int>::iterator first;

    if( ! result.second ) //条件成立说明插入不成功                                             bool second; };
        cout << * result.first <<" already exists." << endl; 
    else 
        cout << * result.first << " inserted." << endl; 
    return 0;
    } 
输出: 2 already exists.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值