#include <iostream>

using namespace std;

#include <set>

int main(int argc, const char * argv[])

{

//set必须保证输出数据的唯一性

set<int> ss;

int a[] = {1,2,5,4,3,6,7,8};

//插入数据

for (int i=0; i<sizeof(a)/4; i++) {

ss.insert(a[i]);

}

//删除数据

for (set<int>::iterator p =ss.begin(); p!=ss.end(); ++p) {

if (*p==3) {

ss.erase(p);

}

}

//输出

for(set<int>::iterator p=ss.begin();p!=ss.end();++p)

{

cout<<*p<<endl;

}

return 0;

}

输出:1 2 4 5 6 7 8

集合(Set)是一种包含已排序对象的关联容器。多元集合(MultiSets)和集合 (Sets)相像,只不过支持重复对象,其用法与set基本相同。
1.begin() 返回指向第一个元素的迭代器
2.clear() 清除所有元素

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

9

4.empty() 如果集合为空,返回true
5.end() 返回指向最后一个元素的迭代器
6.equal_range() 返回第一个>=关键字的迭代器和>关键字的迭代器

语法:

pair <iterator,iterator>equal_range( const key_type &key ); //key是用于排序的关键字
Set<int> ctr;
例如:

Pair<set<int>::iterator,set<int>::iterarot>p; For(i=0;i<=5;i++) ctr.insert(i); P=ctr.equal_range(2); 那么*p.first==2;*p.second==3;

7.erase() 删除集合中的元素 语法:

iterator erase( iterator i ); //删除i位置元素
iterator erase( iterator start, iterator end ); //删除从start开始到end(end为第一个不被删除的值)结束的元素 size_type erase( const key_type &key ); //删除等于key值的所有元素(返回被删除的元素的个数) //前两个返回第一个不被删除的双向定位器,不存在返回末尾 //第三个返回删除个数

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

iterator find( const key_type &key ); //查找等于key值的元素,并返回指向该元素的迭代器; //如果没有找到,返回指向集合最后一个元素的迭代器

9.get_allocator() 返回集合的分配器 10.insert() 在集合中插入元素

语法:
iterator insert( iterator i, const TYPE &val ); //在迭代器i前插入val
void insert( input_iterator start, input_iterator end ); //将迭代器start开始到end(end不被插入)结束返回内的元素插入到集合中
pair insert( const TYPE &val ); //插入val元素,返回指向该元素的迭代器和一个布尔值来说明val是否成功被插入 //应该注意的是在集合(Sets中不能插入两个相同的元素)

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

iterator lower_bound( const key_type &key );

//返回一个指向大于或者等于key值的第一个元素的迭代器 12.key_comp() 返回一个用于元素间值比较的函数

语法:
key_compare key_comp(); //返回一个用于元素间值比较的函数对象

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

10

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

Set<int> ctr;
Set<int>::reverse_iterator rcp; For(rcp=ctr.rbegin();rcp!=ctr.rend();rcp++) Cout<<*rcp<<” ”;

15.rend() 返回指向集合中第一个元素的反向迭代器 16.size() 集合中元素的数目
17.swap() 交换两个集合变量

语法:

void swap( set &object ); //交换当前集合和object集合中的元素 18.upper_bound() 返回大于某个值元素的迭代器

语法:
iterator upwer_bound( const key_type &key ); //返回一个指向大于key值的第一个元素的迭代器

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

iterator upper_bound( const key_type &key );//返回一个用于比较元素间的值的函数对象

随机推荐

  1. http statusCode(状态码)

    转自:1) http://specs.openstack.org/openstack/keystone-specs/api/v3/identity-api-v3.html#unauthorized   ...

  2. Redis系列-配置文件小结

    如果不指定配置文件,Redis也可以启动,此时,redis使用默认的内置配置.不过在正式环境,常常通过配置文件[通常叫redis.conf]来配置redis. redis.conf配置格式如下: ke ...

  3. Effective C++ -----条款24:若所有参数皆需类型转换,请为此采用non-member函数

    如果你需要为某个函数的所有参数(包括被this指针所指的那个隐喻参数)进行类型转换,那么这个函数必须是个non-member.

  4. HDU 4945 2048(dp)

    题意:给n(n<=100,000)个数,0<=a[i]<=2048 .一个好的集合要满足,集合内的数可以根据2048的合并规则合并成2048 .输出好的集合的个数%998244353 ...

  5. 【leetcode】Word Search (middle)

    今天开始,回溯法强化阶段. Given a 2D board and a word, find if the word exists in the grid. The word can be cons ...

  6. 【python】入门学习(十)

    #入门学习系列的内容均是在学习<Python编程入门(第3版)>时的学习笔记 统计一个文本文档的信息,并输出出现频率最高的10个单词 #text.py #保留的字符 keep = {'a' ...

  7. poj 3735 Training little cats 矩阵快速幂+稀疏矩阵乘法优化

    题目链接 题意:有n个猫,开始的时候每个猫都没有坚果,进行k次操作,g x表示给第x个猫一个坚果,e x表示第x个猫吃掉所有坚果,s x y表示第x个猫和第y个猫交换所有坚果,将k次操作重复进行m轮, ...

  8. Java多线程题库

    一.    填空题 处于运行状态的线程在某些情况下,如执行了sleep(睡眠)方法,或等待I/O设备等资源,将让出CPU并暂时停止自己的运行,进入____阻塞_____状态. 处于新建状态的线程被启动 ...

  9. struts2响应AJAX

    1发送ajax请求使用stream进行响应 Result的type属性的stream取值. 1.1定义Action public class UserAction { private String u ...

  10. 当对服务器端返回的极光推送数据请求时,AFN 的 GET 请求失败如何解决

    代码段 控制台   只需在 manager 那里添加一行代码即可 //传入json格式数据,不写则普通post     manager.requestSerializer = [AFJSONReque ...