码迷,mamicode.com
首页 > 编程语言 > 详细

C++STL整理

时间:2019-07-24 21:05:55      阅读:119      评论:0      收藏:0      [点我收藏+]

标签:count   allocator   c++   clu   相同   最大   用法   wap   通过   

  • STL整理

  • set

  set的特性是,所有元素都会根据元素的键值自动排序,set的元素不像map那样可以同时拥有实值(value)和键值(key),set元素的键值就是实值,实值就是键值。set不允许两个元素有相同的键值(也就是集合的特性)。

set的各成员函数列表如下:

1. begin()--返回指向第一个元素的迭代器

2. clear()--清除所有元素

3. count()--返回某个值元素的个数

4. empty()--如果集合为空,返回true

5. end()--返回指向最后一个元素的迭代器

6. equal_range()--返回集合中与给定值相等的上下限的两个迭代器

7. erase()--删除集合中的元素

8. find()--返回一个指向被查找到元素的迭代器

9. get_allocator()--返回集合的分配器

10. insert()--在集合中插入元素

11. lower_bound()--返回指向大于(或等于)某值的第一个元素的迭代器

12. key_comp()--返回一个用于元素间值比较的函数

13. max_size()--返回集合能容纳的元素的最大限值

14. rbegin()--返回指向集合中最后一个元素的反向迭代器

15. rend()--返回指向集合中第一个元素的反向迭代器

16. size()--集合中元素的数目

17. swap()--交换两个集合变量

18. upper_bound()--返回大于某个值元素的迭代器

19. value_comp()--返回一个用于比较元素间的值的函数

#include<iostream>
#include<set>
#include<cstdio>
#include<cstring>
using namespace std;
set<int>s;
struct node
{
    int x;
    friend bool operator < (const node &a,const node &b)
    {
        return -a.x<-b.x;
    }
};
set<node>ms;
int main()
{
    s.insert(1);
    s.insert(1);
    s.insert(2);
    s.insert(3);
    cout<<"begin:"<<*s.begin()<<endl;
    cout<<"count(1):"<<s.count(1)<<endl;
    cout<<"end:"<<*s.end()<<endl;
    cout<<"is empty:"<<s.empty()<<endl;
    s.clear();
    cout<<"is empty:"<<s.empty()<<endl;
    s.insert(1);
    s.insert(1);
    s.insert(2);
    s.insert(3);
    cout<<"count(1):"<<s.count(1)<<endl;
    s.erase(1);
    cout<<"count(1):"<<s.count(1)<<endl;
    cout<<"size:"<<s.size()<<endl;
    cout<<"*iterator find(3):"<<*s.find(3)<<endl;
    s.insert(1);
    cout<<"count(2):"<<s.count(2)<<endl;
    s.erase(2);
    cout<<"count(2):"<<s.count(2)<<endl;
    s.clear();
    int a[5]={1,4,3,8};
    s.insert(a,a+4);
    set<int>::iterator iter;
    cout<<"contain:";
    for(iter=s.begin();iter!=s.end();iter++)
    cout<<*iter<<" ";cout<<endl;
    cout<<"key>3:"<<*s.upper_bound(3)<<endl;
    cout<<"key<3:"<<*s.lower_bound(3)<<endl;
    ms.insert((node){1});
    ms.insert((node){2});
    ms.insert((node){3});
    ms.insert((node){1});
    set<node>::iterator it;
    cout<<"ms contain:";
    for(it=ms.begin();it!=ms.end();it++)
    cout<<it->x<<" ";cout<<endl;
    
}
    

  $TIPS:$可以直接通过$set.insert(a,a+4)$插入多个元素,$find,upper_bound,lower_bound$返回的是迭代器,$erase$有三种用法:$set.erase(iter),set.erase(begin,end),set.erase(key_val)$,分别为删除指针只向的值,两个指针间的值,键值。

C++STL整理

标签:count   allocator   c++   clu   相同   最大   用法   wap   通过   

原文地址:https://www.cnblogs.com/THRANDUil/p/11240682.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!