C++ STL, set用法。 待更新zzzzz
set集合容器:实现了红黑树的平衡二叉检索树的数据结构,插入元素时,它会自动调整二叉树的排列,把元素放到适当的位置,以保证每个子树根节点键值大于左子树所有节点的键值,小于右子树所有节点的键值;另外,还得保证根节点左子树的高度与右子树高度相等。
平衡二叉检索树使用中序遍历算法,检索效率高于vector、deque和list等容器,另外使用中序遍历可将键值按照从小到大遍历出来。
构造set集合主要目的是为了快速检索,不可直接去修改键值。
说白了就是一个容器,用来存放数据,以二叉搜索树的形式存放。没有重复元素。
使用set需要声明#include“set”
主要功能如下:
insert() ,插入一个元素
clear() ,删除set容器中的所有的元素
empty() ,判断set容器是否为空
size() ,返回当前set容器中的元素个数
count() ,用来查找set中某个键值出现次数。
find() ,返回给定值值得定位器,如果没找到则返回end()
erase(i) ,删除定位器iterator指向的值
#include"iostream"
#include"set"
using namespace std;
int main(){
set<int> s; //创建一个int类型的set
set<int>::iterator it; //创建一个它对应的迭代器 for(int i=;i<;i++){ // 插入0-9;
s.insert(i);
} if(s.empty()) //empty判断set是否为空,如果为空返回true
cout<<"s为空"<<endl;
else
cout<<"s不为空"<<endl; cout<<"set容器元素个数为"<<s.size() <<endl; cout<<"1出现的次数"<<s.count()<<endl;
cout<<"10出现的次数"<<s.count()<<endl; s.erase(); //删除某个元素
cout<<"5出现的次数"<<s.count()<<endl; it=s.find(); //查找数据,find,如果没有找到,迭代器end,如果找到,为找到的数据
if(it!=s.end())
cout<<*it<<endl; for (it = s.begin(); it!= s.end(); ++it){ //遍历数据,用迭代器遍历数据 cout << *it << endl;
}
return ;
}
C++ STL, set用法。 待更新zzzzz的更多相关文章
- STL vector用法介绍
STL vector用法介绍 介绍 这篇文章的目的是为了介绍std::vector,如何恰当地使用它们的成员函数等操作.本文中还讨论了条件函数和函数指针在迭代算法中使用,如在remove_if()和f ...
- 记一些stl的用法(持续更新)
有些stl不常用真的会忘qwq,不如在这里记下来,以后常来看看 C++中substr函数的用法 #include<string> #include<iostream> usin ...
- STL学习笔记(不定期更新)
algorithm *1.sort() 用法:sort(数组名,名+长度(,cmp)); int cmp(T a,T b)//T是要排序的a,b的类型,也可以是结构体中任意成员变量 { return ...
- STL set 用法
c++ stl集合set介绍 c++ stl集合(Set)是一种包含已排序对象的关联容器.set/multiset会根据待定的排序准则,自动将元素排序.两者不同在于前者不允许元素重复,而后者允许. ...
- STL map 用法
首先make_pair Pairs C++标准程序库中凡是"必须返回两个值"的函数, 也都会利用pair对象 class pair可以将两个值视为一个单元.容器类别map和mul ...
- 日常笔记6C++标准模板库(STL)用法介绍实例
一.vector常见用法详解 vector翻译为向量,但是这里翻译成变长数组的叫法更好理解. 如果typename是一个STL容器,定义的时候要记得在>>符号之间加上空格,因为在C++11 ...
- c++ STL map 用法
map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据 处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时 ...
- codevs 1285 二叉查找树STL基本用法
C++STL库的set就是一个二叉查找树,并且支持结构体. 在写结构体式的二叉查找树时,需要在结构体里面定义操作符 < ,因为需要比较. set经常会用到迭代器,这里说明一下迭代器:可以类似的把 ...
- STL vector 用法介绍
介绍 这篇文章的目的是为了介绍std::vector,如何恰当地使用它们的成员函数等操作.本文中还讨论了条件函数和函数指针在迭代算法中使用,如在remove_if()和for_each()中的使用.通 ...
随机推荐
- D - Invitation Cards
D - Invitation Cards Time Limit:8000MS Memory Limit:262144KB 64bit IO Format:%lld & %llu ...
- 基于PI的Webservice发布实例
[转自http://blog.csdn.net/yin_chuan_lang/article/details/6706816] 最近的项目中,接口较多,而Webservice技术是主要实现方式之一.下 ...
- js基础--substr()和substring()的区别
最近做项目的时候,字符串截取一直用的是substr()方法,有时候需要截取的内容是中间部分的话就很麻烦,需要分两次,第一次截取前半部分,第二次在第一次的基础上截取后半部分.写了几次之后总觉得没对,应该 ...
- fedora25 安装sublime text3
fedora 25安装使用 sublime text 3 安装 sublime text 3 fedora 需要选择 tarball 版本.下载后将 sublime text 3 解压后放到 opt ...
- 云计算服务的三种类型(SaaS、PaaS、IaaS)
云计算可以帮助企业降低IT方面的成本和复杂性,并获得他们蓬勃发展所需的灵活性与敏捷性.但是,规划出通往云的明确路径并非易事.毕竟用户需要看透与云相关的市场大肆宣传,然后理解并分析不同种类的云计算模式的 ...
- HackerRank - angry-children 【排序】
题意 求一个序列当中 其 长度为 K 的子序列 中的 最大值 - 最小值 求 这个值 最小是多少 思路 先将序列排序 然后 I = 0, J = K - 1 然后 往下遍历 如果 arr[j] - a ...
- iOS 当前应用或者浏览器中 唤起 手机其他应用
这种方法 是 产品很常见的需求,关键 是在info.plist URL types 设置对应属性 比如 里面 子属性 URL identifier 设置成 bundle id //设置应用指向 ...
- LISP
LISP是一种通用高级计算机程序语言,长期以来垄断人工智能领域的应用.LISP作为因应人工智能而设计的语言,是第一个声明式系内函数式程序设计语言,有别于命令式系内过程式的C.Fortran和面向对象的 ...
- 【leetcode刷题笔记】Triangle
Given a triangle, find the minimum path sum from top to bottom. Each step you may move to adjacent n ...
- 【leetcode刷题笔记】Unique Binary Search Trees
Given n, how many structurally unique BST's (binary search trees) that store values 1...n? For examp ...