set用法总结
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.
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.
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.
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.
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.
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.
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用法总结的更多相关文章
- EditText 基本用法
title: EditText 基本用法 tags: EditText,编辑框,输入框 --- EditText介绍: EditText 在开发中也是经常用到的控件,也是一个比较必要的组件,可以说它是 ...
- jquery插件的用法之cookie 插件
一.使用cookie 插件 插件官方网站下载地址:http://plugins.jquery.com/cookie/ cookie 插件的用法比较简单,直接粘贴下面代码示例: //生成一个cookie ...
- Java中的Socket的用法
Java中的Socket的用法 Java中的Socket分为普通的Socket和NioSocket. 普通Socket的用法 Java中的 ...
- [转载]C#中MessageBox.Show用法以及VB.NET中MsgBox用法
一.C#中MessageBox.Show用法 MessageBox.Show (String) 显示具有指定文本的消息框. 由 .NET Compact Framework 支持. MessageBo ...
- python enumerate 用法
A new built-in function, enumerate() , will make certain loops a bit clearer. enumerate(thing) , whe ...
- [转载]Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法总结
本文对Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法进行了详细的总结,需要的朋友可以参考下,希望对大家有所帮助. 详细解读Jquery各Ajax函数: ...
- 【JavaScript】innerHTML、innerText和outerHTML的用法区别
用法: <div id="test"> <span style="color:red">test1</span> tes ...
- chattr用法
[root@localhost tmp]# umask 0022 一.chattr用法 1.创建空文件attrtest,然后删除,提示无法删除,因为有隐藏文件 [root@localhost tmp] ...
- 萌新笔记——vim命令“=”、“d”、“y”的用法(结合光标移动命令,一些场合会非常方便)
vim有许多命令,网上搜有一堆贴子.文章列举出各种功能的命令. 对于"="."d"."y",我在无意中发现了它们所具有的相同的一些用法,先举 ...
- [转]thinkphp 模板显示display和assign的用法
thinkphp 模板显示display和assign的用法 $this->assign('name',$value); //在 Action 类里面使用 assign 方法对模板变量赋值,无论 ...
随机推荐
- linux mint 下mysql中文支持问题
一.mysql默认不支持中文,它的server和db默认是latin1编码.所以我们要将其改变为utf-8编码,因为utf-8包含了地球上大部分语言的二进制编码 1.关闭mysql服务 sudo /e ...
- 使用PowerDesigner 15对现有数据库进行反向工程(图解教程)
1.启动PD 2.菜单:File->Reverse Engineer ->Database 出来New Physical Data Model对话框 点击“确定”按钮,弹出Database ...
- 校门外的树 - Grids2808
校门外的树 问题描述: 某校大门外长度为 L 的马路上有一排树,每两棵相邻的树之间的间隔都是1 米.我们 可以把马路看成一个数轴,马路的一端在数轴0 的位置,另一端在L 的位置:数轴上的每 个整数点, ...
- C 语言 输入字符串 并计算输入的字符的长度
int main(void) { char a[50];int i=0;char *j;gets(a);//输入字符串j=a;while(*j!='\0'){j++;//指针指向下一个数组字符i++; ...
- Android ndk第一步,构建jni headers
转载请注明出处:http://www.cnblogs.com/fpzeng/p/4281801.html 源码请见 https://github.com/fpzeng/HelloJNI PC系统: u ...
- webapi 上传图片
需求:上传学员信息时同时上传头像信息,学员基本信息表和科目表为一对多关系表(添加基本信息后添加通过科目信息). 测试: [HttpPost] public string Post() { if ( ...
- WPF异常“调用线程无法访问此对象,因为另一个线程拥有该对象 ”
WPF中在对界面进行操作的时候,可能会遇到"调用线程无法访问此对象,因为另一个线程拥有该对象"异常,这是因为WPF中只有UI线程才能操作UI元素,非UI线程要访问UI时就会报异常了 ...
- fontresize 移动端的手机字体 大小设置
这段js 需要置于页面上端 也就是 需要先加载js然后加载页面 (这段js是原生js而且比较短小 基本对页面加载速度无影响) FontResize : function(maxWidth){ (fun ...
- iOS自动打发布包-备用
#!/bin/bash # autoPublishH.sh# ## Created by 刘志托 liu on 12-2-8.# Copyright (c) 2012年 null. All r ...
- Cmake ,Out of Source Build
Out of Source build呢,就是让Cmake产生的临时垃圾文件,不关乎于项目实际本身的文件放到一个目录里,一般我们把这个目录放在项目根目录(也可以认为是根CmakeLists.txt)下 ...