关联容器set的用法(关联容器,红黑树,)

set和multiset会根据特定的排序准则自动将元素排序,set中元素不允许重复,multiset可以重复。// 2017/7/23号 好像set容器里面只能装一个元素

#include<iostream>
#include<set>
using namespace std;
//set插入元素操作
int main()
{
    //定义一个int型集合对象s,当前没有任何元素.由www.169it.com搜集整理
    set<int> s;
    s.insert(8);  //第一次插入8,可以插入
    s.insert(1);
    s.insert(12);
    s.insert(6);
    s.insert(8);   //第二次插入8,重复元素,不会插入
    set<int>::iterator it; //定义前向迭代器
    //中序遍历集合中的所有元素
    for(it=s.begin();it!=s.end();it++)
        cout<<*it<<"  ";   // [1,6,8,12]

    //查找
    it=s.find(12);     //返回value所在位置,找不到value将返回end()
    cout<<*it<<endl;   // 12
    it=s.lower_bound(1); // 二分查找有重复的元素
    cout<<*it<<endl;   // 1

    return 0;
}
时间: 2024-11-09 00:30:54

关联容器set的用法(关联容器,红黑树,)的相关文章

关联容器(底层机制) — 红黑树

set.map.multiset.multimap四种关联式容器的内部都是由红黑树实现的.在STL中红黑树是一个不给外界使用的独立容器.既然是容器,那么就会分配内存空间(节点),内部也会存在迭代器.关于红黑树的一些性质,可以参考"数据结构"中的笔记,这里只记录STL中的红黑树是如何实现的. 和slist一样,红黑树的节点和迭代器均采用了双层结构: 节点:__rb_tree_node继承自__rb_tree_node_base 迭代器:__rb_tree_iterator继承自__rb_

顺序容器的insert用法

#include <iostream> #include <algorithm> #include <vector> #include <string> #include <list> using namespace std; //顺序容器的insert用法 //顺序容器:vector,deque,list,forward_list,array,string //------------------------------------------

STL RB Tree(红黑树)分析

当我2014年上半年看内核代码的时候,进程调度用的就是RB  Tree,而现在分析STL源码的时候发现Set和Map也使用了这个数据结构,说明了RBTree的使用时如此的广泛,所以我花了两天时间看了这,分三部分来说明,首先我要说明下红黑树的基本概念,然后说明下STL中的RB Tree的迭代器,最后说下STL中RB Tree容器的实现. 一.红黑树的基本概念 红黑树是平衡二叉搜索树的一种(平衡二叉搜索树中又有AVL Tree),满足二叉搜索树的条件外,还应买足下面的4个条件 1) 每个节点不是红色

【C/C++学院】0828-STL入门与简介/STL容器概念/容器迭代器仿函数算法STL概念例子/栈队列双端队列优先队列/数据结构堆的概念/红黑树容器

STL入门与简介 #include<iostream> #include <vector>//容器 #include<array>//数组 #include <algorithm>//算法 using namespace std; //实现一个类模板,专门实现打印的功能 template<class T> //类模板实现了方法 class myvectorprint { public: void operator ()(const T &

STL容器的常用用法

1.vector: #include <vector>#include <algorithm> vector<int> v;vector<int> v(10);//定义大小为10的int型向量容器.vector<int> v(10,3);//定义大小为10,每个元素为3. v.push_back(2);//尾部添加元素2.v[0]=2;v[1]=3;//下标访问. vector<int>::iterator it;//迭代器访问for

红黑树容器实现(带迭代器)

上一篇文章是纯粹地实现了红黑树,但是在STL中,红黑树容器是需要迭代器实现的.故将上一篇文章改进后实现红黑树容器. 本人实现的红黑树容器是底层红黑树结构是依据算法导论中设计的包含普通节点和空节点.不同于STL中的红黑树,其迭代器故也 有点不一样 //my_rb_tree.h #ifndef MY_RB_TREE_H_INCLUDED #define MY_RB_TREE_H_INCLUDED #include"iterator_rb_tree.h" #include"simp

并发容器(一)同步容器 与 并发容器

一.同步容器 同步容器包括两类: Vector.Hashtable.Stack 同步的封装器类由 Collections.synchronizedXXX 等工厂方法创建的.(JDK1.2加入) ??这些类实现线程安全的方式是:将他们的状态封装起来,并对每个公有方法都进行同步,使得每一次只有一个线程能访问容器的状态. 同步容器类的出现是为了解决 Collection.Map 不能同步,线程不安全的问题. 同步容器类的问题 ??同步容器类都是线程安全的,但不是绝对的线程安全 (所谓线程安全仅仅是在每

【SSH进阶之路】一步步重构容器实现Spring框架——解决容器对组件的“侵入式”管理的两种方案--主动查找和控制反转(九)

目录 [SSH进阶之路]一步步重构容器实现Spring框架--从一个简单的容器开始(八) [SSH进阶之路]一步步重构容器实现Spring框架--解决容器对组件的"侵入式"管理的两种方案--主动查找和控制反转(九) [SSH进阶之路]一步步重构容器实现Spring框架--配置文件+反射实现IoC容器(十)(未更新) [SSH进阶之路]一步步重构容器实现Spring框架--彻底封装,实现简单灵活的Spring框架(十一)(未更新) 对于IOC的原理,我们曾经写过一篇博文,[SSH进阶之路

web容器 web服务器 servlet/jsp容器 之间的区别和关系是什么?

web容器 web服务器 servlet/jsp容器 之间的区别和关系是什么? 这是我在网上找的一些资料:1. Web浏览器除了可以在本地硬盘上打开网页文档外,还可以使用http网络协议从网络上的Web服务器(也叫www服务器)上获取网页文档的内容. 2. Web浏览器与Web服务器分别代表着TCP网络程序的客户机和服务器. 3. 无论网站规模的大小,最起码的工作就是要在用做Web服务器的计算机上安装某种Web服务器软件.只要在一台计算机上安装了Web服务器软件,从功能上讲,这台计算机就可以成为

【STL容器学习笔记】-顺序容器

STL提供了三个顺序容器:vector.list和deque.Vector和deque都是用数组来实现的,list是用链表来实现的.关于三者的实现原理和各自应用的场景我们做一下分析. 1.vector就是动态数组,它是在堆中分配内存,如果vector中元素个数大于当前大小时,就会再分配内存.它拥有一段连续的内存空间,并且起始地址不变,因此它能很好地支持随机访问元素,即[ ]操作符.vector对末尾元素进行操作(添加或者删除元素)最快,因为不用移动内存.但如果是在中间位置插入或者删除元素,因为要