set集合用于存放不重复的元素

template <class Key, class Compare = less<Key>, class Alloc = alloc>
class set
{
......
private:
typedef rb_tree<key_type identity="" ,=""><value_type value_type,="">, key_compare, Alloc> rep_type;
rep_type t; //set内部的实现实际上是一个红黑树
......
};

Constructors

set

Constructs a set that is empty or that is a copy of all or part of some other set.

set默认的比较器是不允许 有相同元素的,不过你可以重新定义一个比较器

Typedefs

allocator_type

A type that represents the allocator class for the set object.

const_iterator

A type that provides a bidirectional iterator that can read a const element in the set.

const_pointer

A type that provides a pointer to a const element in a set.

const_reference

A type that provides a reference to a const element stored in a set for reading and performing const operations.

const_reverse_iterator

A type that provides a bidirectional iterator that can read any const element in the set.

difference_type

A signed integer type that can be used to represent the number of elements of a set in a range between elements pointed to by iterators.

iterator

A type that provides a bidirectional iterator that can read or modify any element in a set.

key_compare

A type that provides a function object that can compare two sort keys to determine the relative order of two elements in the set.

key_type

The type describes an object stored as an element of a set in its capacity as sort key.

pointer

A type that provides a pointer to an element in a set.

reference

A type that provides a reference to an element stored in a set.

reverse_iterator

A type that provides a bidirectional iterator that can read or modify an element in a reversed set.

size_type

An unsigned integer type that can represent the number of elements in a set.

value_compare

The type that provides a function object that can compare two elements to determine their relative order in the set.

value_type

The type describes an object stored as an element of a set in its capacity as a value.

Member Functions

begin

Returns an iterator that addresses the first element in the set.

clear

Erases all the elements of a set.

如果当前容器中的元素是自己new出来的对象指针,那么在调用clear或erase函数之前,需要自己先释放掉这部分内存。

否则会有内存泄露。

count

Returns the number of elements in a set whose key matches a parameter-specified key.

set<int> s1; set<int>::size_type i;

s1.insert(1); s1.insert(1); // Keys must be unique in set, so duplicates are ignored i = s1.count(1);

cout << "The number of elements in s1 with a sort key of 1 is: " << i << "." << endl;

i = s1.count(2);

cout << "The number of elements in s1 with a sort key of 2 is: " << i << "." << endl;

结果分别为1和0.

对于set而言,只存在1(表示关键字在set中)或0(关键字不在set中)两种情况。

empty

Tests if a set is empty.

end

Returns an iterator that addresses the location succeeding the last element in a set.

equal_range

Returns a pair of iterators respectively to the first element in a set with a key that is greater than a specified key and to the first element in the set with a key that is equal to or greater than the key.

pair<iterator,iterator> equal_range(const key_type & x) const
返回容器中关键字等于x(满足==x关系)的元素区间。返回值[pair.first, pair.second]均满足该关系。

如果只是判断元素是否存在,可以使用count函数检查返回值;

erase

Removes an element or a range of elements in a set from specified positions or removes elements that match a specified key.

如果当前容器中的元素是自己new出来的对象指针,那么在调用clear或erase函数之前,需要自己先释放掉这部分内存。

否则会有内存泄露。

find

Returns an iterator addressing the location of an element in a set that has a key equivalent to a specified key.

get_allocator

Returns a copy of the allocator object used to construct the set.

insert

Inserts an element or a range of elements into a set.

pair<iterator, bool> insert(const value_type& x)
将一个元素插入当前set容器。返回值pair的第一个元素,表示插入位置的迭代器;第二个元素,表示是否插入到容器中,只有该值为true,迭代器才有效。

检查是否插入成功可以如下:

std::pair<std::set<int>::iterator,bool> insert_pair;
insert_pair = set_nums.insert(RandomOneNum(min,max,bNegative));
if (insert_pair.second == true)
{
pNums[nIndex++] = *insert_pair.first;
}

key_comp

Retrieves a copy of the comparison object used to order keys in a set.

lower_bound

Returns an iterator to the first element in a set with a key that is equal to or greater than a specified key.

max_size

Returns the maximum length of the set.

rbegin

Returns an iterator addressing the first element in a reversed set.

rend

Returns an iterator that addresses the location succeeding the last element in a reversed set.

size

Returns the number of elements in the set.

swap

Exchanges the elements of two sets.

upper_bound

Returns an iterator to the first element in a set with a key that is greater than a specified key.

value_comp

Retrieves a copy of the comparison object used to order element values in a set.

operator!= (set)

Tests if the set or multiset object on the left side of the operator is not equal to the set or multiset object on the right side.

operator< (set)

Tests if the set or multiset object on the left side of the operator is less than the set or multiset object on the right side.

operator<= (set)

Tests if the set or multiset object on the left side of the operator is less than or equal to the set or multiset object on the right side.

operator== (set)

Tests if the set or multiset object on the left side of the operator is equal to the set or multiset object on the right side.

operator> (set)

Tests if the set or multiset object on the left side of the operator is greater than the set or multiset object on the right side.

operator>= (set)

Tests if the set or multiset object on the left side of the operator is greater than or equal to the set or multiset object on the right side.

set也重载了[]运算符,可以像数组一样使用

注意的是set中数元素的值不能直接被改变

template <class Key, class Compare, class Alloc>
inline bool operator == (const set<Key, Compare, Alloc> & x, const set<Key, Compare, Alloc> & y)
判断两个set容器是否相等。全局函数,非成员函数。

template <class Key, class Compare, class Alloc>
inline bool operator < (const set<Key, Compare, Alloc> & x, const set<Key, Compare, Alloc< & y)
判断容器x是否小于y。全局函数,非成员函数。

set用法总结的更多相关文章

  1. EditText 基本用法

    title: EditText 基本用法 tags: EditText,编辑框,输入框 --- EditText介绍: EditText 在开发中也是经常用到的控件,也是一个比较必要的组件,可以说它是 ...

  2. jquery插件的用法之cookie 插件

    一.使用cookie 插件 插件官方网站下载地址:http://plugins.jquery.com/cookie/ cookie 插件的用法比较简单,直接粘贴下面代码示例: //生成一个cookie ...

  3. Java中的Socket的用法

                                   Java中的Socket的用法 Java中的Socket分为普通的Socket和NioSocket. 普通Socket的用法 Java中的 ...

  4. [转载]C#中MessageBox.Show用法以及VB.NET中MsgBox用法

    一.C#中MessageBox.Show用法 MessageBox.Show (String) 显示具有指定文本的消息框. 由 .NET Compact Framework 支持. MessageBo ...

  5. python enumerate 用法

    A new built-in function, enumerate() , will make certain loops a bit clearer. enumerate(thing) , whe ...

  6. [转载]Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法总结

    本文对Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法进行了详细的总结,需要的朋友可以参考下,希望对大家有所帮助. 详细解读Jquery各Ajax函数: ...

  7. 【JavaScript】innerHTML、innerText和outerHTML的用法区别

    用法: <div id="test">   <span style="color:red">test1</span> tes ...

  8. chattr用法

    [root@localhost tmp]# umask 0022 一.chattr用法 1.创建空文件attrtest,然后删除,提示无法删除,因为有隐藏文件 [root@localhost tmp] ...

  9. 萌新笔记——vim命令“=”、“d”、“y”的用法(结合光标移动命令,一些场合会非常方便)

    vim有许多命令,网上搜有一堆贴子.文章列举出各种功能的命令. 对于"="."d"."y",我在无意中发现了它们所具有的相同的一些用法,先举 ...

  10. [转]thinkphp 模板显示display和assign的用法

    thinkphp 模板显示display和assign的用法 $this->assign('name',$value); //在 Action 类里面使用 assign 方法对模板变量赋值,无论 ...

随机推荐

  1. DSP TMS320C6000基础学习(3)——CCS v5软件开发环境搭建

    ================================================== DSP CCS工程文件构成 =================================== ...

  2. (转载)C# 编程 使用可空类型

    转载出处为://https://msdn.microsoft.com/zh-cn/library/2cf62fcy(vs.90).aspx#Anchor_1 C#可以为 null 的类型可以表示基础类 ...

  3. Python入门-----介绍

    摘要:Python语言的特点 ----->优雅.明确.简单 一.Python适合的领域 web网站和各种网络服务 系统工具和脚本 作为“胶水”语言,把其他语言开发的模块包装起来方便使用 二.Py ...

  4. C语言初学 比较五个整数并输出最大值和最小值2

    #include <stdio.h> int main() { int i,a[5]; int max = 0,min = 0; printf("输入5个整数(空格隔开) :\n ...

  5. C语言初学 if-else语句判别在ASCII值中小于32的可控制符的类型

    #include<stdio.h> main() { char c; printf("输入一个符号\n"); c=getchar(); if(c<32) prin ...

  6. Swift--存储属性-备

    Swift中的属性分为存储属性和计算属性,存储属性就是Objective-C中的数据成员,计算属性不存储数据,但可以通过计算其他属性返回数据. 存储属性可以存储数据,分为常量属性(用关键字let定义) ...

  7. 一步步教你如何源码编译Recovery

    *1 准备Ubuntu作为您的操作系统,笔者的版本是12.04_amd64. *2 准备 Android 源码的编译环境,主要是安装一些编译用到的lib库,以及同步源码的一些工具 ,如GIT,CURL ...

  8. 这样就算会了PHP么?-5

    汇集一点关于数据深入一些的几个函数,去重,弹出,加入,查找.... <?php $str = "时装,休闲,职业装"; $strs = explode(",&quo ...

  9. TranslateAnimation详解

    TranslateAnimation详解 Android JDK为我们提供了4种动画效果,分别是: AlphaAnimation,RotateAnimation, ScaleAnimation, Tr ...

  10. java开源资源

    开到一遍不错的java开源整理,摘录一下,后续遇到好的继续更新. 构建 这里搜集了用来构建应用程序的工具. Apache Maven:Maven使用声明进行构建并进行依赖管理,偏向于使用约定而不是配置 ...