c++ 容器set

转载 2016年06月02日 00:10:22

c++ stl集合set介绍

   c++ stl集合(Set)是一种包含已排序对象的关联容器。set/multiset会根据待定的排序准则,自动将元素排序。两者不同在于前者不允许元素重复,而后者允许。

1) 不能直接改变元素值,因为那样会打乱原本正确的顺序,要改变元素值必须先删除旧元素,则插入新元素

2) 不提供直接存取元素的任何操作函数,只能通过迭代器进行间接存取,而且从迭代器角度来看,元素值是常数

3) 元素比较动作只能用于型别相同的容器(即元素和排序准则必须相同)

set模板原型://Key为元素(键值)类型

1
template <class Key, class Compare=less<Key>, class Alloc=STL_DEFAULT_ALLOCATOR(Key) >

从原型可以看出,可以看出比较函数对象及内存分配器采用的是默认参数,因此如果未指定,它们将采用系统默认方式。


set的各成员函数列表如下:

c++ stl容器set成员函数:begin()--返回指向第一个元素的迭代器

c++ stl容器set成员函数:clear()--清除所有元素

c++ stl容器set成员函数:count()--返回某个值元素的个数

c++ stl容器set成员函数:empty()--如果集合为空,返回true

c++ stl容器set成员函数:end()--返回指向最后一个元素的迭代器

c++ stl容器set成员函数:equal_range()--返回集合中与给定值相等的上下限的两个迭代器

c++ stl容器set成员函数:erase()--删除集合中的元素

c++ stl容器set成员函数:find()--返回一个指向被查找到元素的迭代器

c++ stl容器set成员函数:get_allocator()--返回集合的分配器

c++ stl容器set成员函数:insert()--在集合中插入元素

c++ stl容器set成员函数:lower_bound()--返回指向大于(或等于)某值的第一个元素的迭代器

c++ stl容器set成员函数:key_comp()--返回一个用于元素间值比较的函数

c++ stl容器set成员函数:max_size()--返回集合能容纳的元素的最大限值

c++ stl容器set成员函数:rbegin()--返回指向集合中最后一个元素的反向迭代器

c++ stl容器set成员函数:rend()--返回指向集合中第一个元素的反向迭代器

c++ stl容器set成员函数:size()--集合中元素的数目

c++ stl容器set成员函数:swap()--交换两个集合变量

c++ stl容器set成员函数:upper_bound()--返回大于某个值元素的迭代器

c++ stl容器set成员函数:value_comp()--返回一个用于比较元素间的值的函数


c++ stl集合set插入,遍历用法举例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#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<<endl;    
    system("pause"); 
    return 0; 
}

c++ STL中的set容器

c++ stl集合set介绍 c++ stl集合(Set)是一种包含已排序对象的关联容器。set/multiset会根据待定的排序准则,自动将元素排序。两者不同在于前者不允许元素重复,而后者允许。1)...
  • huangfei711
  • huangfei711
  • 2015年08月07日 10:59
  • 2741

【原创】C++ 集合set与关联性容器

关联性容器 set与map 引入 map和set常常用,但是不太了解,不太深入。想要深入的了解,发现网上的全是一些高级的东西,讲讲了map和set的定义,但是并没有或是很少提及用法。想看用法,...
  • c20182030
  • c20182030
  • 2017年05月03日 14:01
  • 492

C++ STL set容器常用用法

set是STL中一种标准关联容器。它底层使用平衡的搜索树——红黑树实现,插入删除操作时仅仅需要指针操作节点即可完成,不涉及到内存移动和拷贝,所以效率比较高。set,顾名思义是“集合”的意思,在set中...
  • CerberuX
  • CerberuX
  • 2016年06月28日 10:39
  • 7265

C++ set容器用法 学习笔记

set集合容器实现了红黑树(Red-Black Tree)的平衡二叉检索树的数据结构,在插入元素时,他会自动调整二叉树的排列,把该元素放到合适的位置上,以确保每个子树根节点的键值大于左子树所有节点的键...
  • u012823258
  • u012823258
  • 2014年01月16日 13:42
  • 4456

c++ 自定义排序容器set

编程实例: #include #include #include using namespace std; using std::set; struct MySetItem { strin...
  • chinabhlt
  • chinabhlt
  • 2015年12月16日 09:51
  • 1419

大爱C++——set容器使用仿函数

前面博客介绍过set容器了,这里还是简介一下set容器: 一:set容器简介 1.set是一个集合容器,其中所包含的元素是唯一的,集合中的元素按一定的顺序排列。元素插入过程是按排序规则插入,所...
  • sum_TW
  • sum_TW
  • 2017年03月12日 11:23
  • 1206

滥用C++容器的教训:vector和set的查找效率问题

http://www.ithao123.cn/content-5318099.html 曾经写过一个文本比较的程序,其功能是先扫描两个服务器中指定的目录,按照给定的时间参数把符合条件的文件路...
  • mydriverc2
  • mydriverc2
  • 2017年03月16日 18:07
  • 1476

C++ STL容器中erase的使用

erase()函数的功能是用来删除容器中的元素 函数原型: iterator erase(iterator where); iterator erase(iterator first,i...
  • sszgg2006
  • sszgg2006
  • 2012年04月12日 14:11
  • 6062

stl之set集合容器应用基础

set集合容器使用一种称为红黑树(Red-Black Tree) 的平衡二叉检索树的数据结构,来组织泛化的元素数据。每个节点包含一个取值红色或黑色的颜色域,以利于进行树的平衡处理。作为节点键值的元素的...
  • u010418035
  • u010418035
  • 2015年07月03日 19:49
  • 2250

C++二叉搜索树容器set的调用

#include #include #include #include #include #include #include #include #include #include using name...
  • JobsandCzj
  • JobsandCzj
  • 2015年08月16日 08:03
  • 672
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:c++ 容器set
举报原因:
原因补充:

(最多只允许输入30个字)