C/C++ | STL | set

版权声明:本人小白,有错误之处恳请指出,感激不尽;欢迎转载 https://blog.csdn.net/stone_fall/article/details/88823980

C++ Sets

集合(Set)是一种包含已排序对象的关联容器。
map和set封装了二叉树等,在封装这些数据结构的时候,STL按照程序员的使用习惯,以成员函数方式提供的常用操作,如:插入、排序、删除、查找等。让用户在STL使用过程中,并不会感到陌生。
关于set,必须说明的是set关联式容器。set作为一个容器也是用来存储同一数据类型的数据类型,并且能从一个数据集合中取出数据,在set中每个元素的值都唯一,而且系统能根据元素的值自动进行排序。应该注意的是set中数元素的值不能直接被改变。

函数介绍

  • begin

语法:

iterator begin();

返回指向当前集合中第一个元素的迭代器。

  • clear

语法:

void clear();

清除当前集合中的所有元素。

  • count

语法:

size_type count( const key_type &key );

返回当前集合中出现的某个值的元素的数目。

  • empty

语法:

bool empty();

如果当前集合为空,返回true;否则返回false。

  • end

语法:

const_iterator end();

返回指向当前集合中最后一个元素的迭代器。

  • equal_range

语法:

pair equal_range( const key_type &key );

返回集合中与给定值相等的上下限的两个迭代器。

  • erase

语法:

void erase( iterator i );

void erase( iterator start, iterator end );

size_type erase( const key_type &key );

说明:

● 删除i元素;

● 删除从start开始到end结束的元素;

● 删除等于key值的所有元素(返回被删除的元素的个数)。

  • find

语法:

iterator find( const key_type &key );

在当前集合中查找等于key值的元素,并返回指向该元素的迭代器;如果没有找到,返回指向集合最后一个元素的迭代器。

  • get_allocator

语法:

allocator_type get_allocator();

返回当前集合的分配器。

  • insert

语法:

iterator insert( iterator i, const TYPE &val );

void insert( input_iterator start, input_iterator end );

pair insert( const TYPE &val );

说明:

● 在迭代器i前插入val;

● 将迭代器start开始到end结束返回内的元素插入到集合中;

● 在当前集合中插入val元素,并返回指向该元素的迭代器和一个布尔值来说明val是否成功的被插入了。

(应该注意的是在集合(Sets)中不能插入两个相同的元素。)

  • lower_bound

语法:

iterator lower_bound( const key_type &key );

返回一个指向大于或者等于key值的第一个元素的迭代器。

  • key_comp

语法:

key_compare key_comp();

返回一个用于元素间值比较的函数对象。

  • max_size

语法:

size_type max_size();

返回当前集合能容纳元素的最大限值。

  • rbegin

语法:

reverse_iterator rbegin();

返回指向当前集合中最后一个元素的反向迭代器。

  • rend

语法:

reverse_iterator rend();

返回指向集合中第一个元素的反向迭代器。

  • size

语法:

size_type size();

返回当前集合中元素的数目。

  • swap

语法:

void swap( set &object );

交换当前集合和object集合中的元素。

  • upper_bound

语法:

iterator upper_bound( const key_type &key );

在当前集合中返回一个指向大于Key值的元素的迭代器。

  • value_comp

语法:

value_compare value_comp();

返回一个用于比较元素间的值的函数对象。

示例

#include<set>    
#include<iostream>    
using namespace std;
int main()
{
    set<int>s;
    int n;
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        int x;
        cin>>x;
        s.insert (x);
    }
    set<int>::iterator it;
    for(it=s.begin ();it!=s.end ();it++)
    {
        printf("%d\n",*it); 
    }
    
    //s.end()没有值
     cout<<"s.begain()   "<<*s.begin ()<<endl;
    //lower_bound()--返回指向大于(或等于)某值的第一个元素的迭代器
    cout<<"lower_buond  3  "<<*s.lower_bound (3)<<endl;
    
    //upper_bound()--返回大于某个值元素的迭代器
    cout<<"upper_bound  3  "<<*s.upper_bound (3)<<endl;

    //find()--返回一个指向被查找到元素的迭代器
    cout<<"find()  3   "<<*s.find (3)<<endl;

    cout<<"s.size()  "<<s.size ()<<endl;
    return 0;
}

输出

1 2 3 4 5 6 7 8 9
2
s.begain()   2
lower_buond  3  1
upper_bound  3  1
find()  3   1
s.size()  1

--------------------------------
Process exited after 4.803 seconds with return value 0
请按任意键继续. . .

猜你喜欢

转载自blog.csdn.net/stone_fall/article/details/88823980
今日推荐