C++ 10.4 关联容器-----set 类型
来源:互联网 发布:网络语言大二班 编辑:程序博客网 时间:2024/06/05 21:58
简介
使用set容器,必须包含set 头文件。操作基本与map 的相同
与map容器一样,set 容器的每个键都只能对应一个元素
以一段范围的元素初始化set对象,或在set对象中插入一组元素时,对于每个键,事实上都只添加了一个元素:
set 支持map的很多操作,除了以下的操作:
set不支持下标操作,而且没有定义mapped_type 类型
在set 容器中,value_type不是pair 类型,而是与key_type相同的类型,因为set里面是键的集合。
使用set容器,必须包含set 头文件。操作基本与map 的相同
set容器不提供下标操作符。为了通过键从set中获取元素,可使用find 运算。如果只需要判断某个元素是否存在,同样可以使用count 运算,返回set 中该键对应的元素个数。对于set 容器,count 的返回值只能是1(元素存在)或0(元素不存在)
=============================================================================================
一、引言
map 容器是键—值对的集合,好比以人名为键的地址和电话号码。
set 容器只是单纯的键的集合。适用于只需要判断某值是否存在的情况。而map适用于需要了解键与值的对应的的情况。
set 里面存储的键必须唯一,不能修改,和map一样
set 支持map的很多操作,除了以下的操作:
set不支持下标操作,而且没有定义mapped_type 类型
在set 容器中,value_type不是pair 类型,而是与key_type相同的类型,因为set里面是键的集合。
set 容器和list 容器的区别
set 适用于保存元素值不变的集合
list适用于保存会发生变化的元素(增删改)
二、set 容器的定义和使用
1、set容器的初始化
使用set容器,必须包含set 头文件。操作基本与map 的相同
与map容器一样,set 容器的每个键都只能对应一个元素
- 以一段范围的元素初始化set对象,或在set对象中插入一组元素时,对于每个键,事实上都只添加了一个元素:
vector<int> ivec;for(vector<int>::size_type i=0;i!=10;i++) {ivec.push_back(i); ivec.push_back(i); }set<int> iset(ivec.begin();ivec.end());cout<<ivec.size()<<endl;//20cout<<iset.size()<<endl;//10//ivec 里面有20个元素 0-9 每个元素都出现了两次。然后用ivec中所有的元素初始化一个int型的set容器,则这个set容器仅有10个元素:ivec中个不相同的元素。
2、在set中添加元素
set<string> set1;//空的set容器set1.insert("the");//往set1容器中添加一个元素set1.insert("end");//往set1容器中再添加一个元素,此时,里面有两个元素
另一种用法是,调用insert函数时,提供一对迭代器实参,插入其标记范围内所有的元素。该版本的insert 函数类似于形参为一对迭代器的构造函数—对于一个键,仅插入一个元素.
- 与map容器一样,带有一个键参数的insert 版本返回pair类型对象,包含一个迭代器和一个bool值,迭代器指向拥有该键的元素,而bool值表明是否添加了元素。使用迭代器对的insert版本返回void类型
set<int> iset2;//空的iset.insert(ivec.begin(),ivec.end());
3、从set 中获取元素
- set容器不提供下标操作符。为了通过键从set中获取元素,可使用find 运算。如果只需要判断某个元素是否存在,同样可以使用count 运算,返回set 中该键对应的元素个数。对于set 容器,count 的返回值只能是1(元素存在)或0(元素不存在)
iset.find(1);/返回一个迭代器,指向键为1的元素iset.find(11);/返回一个迭代器,指向末尾iset.count(1);//返回1,存在1iset.count(11);//返回0,不存在11
- set中的键也为const。不能修改!!!在获得指向set中某元素的迭代器后,只能对其读,不能写
set<int>::iterator set_it=iset.find(1);*set_it =11;//错误!!!不能改set里面的元素值cout<<*set_it<<endl;//可以!!
- C++ 10.4 关联容器-----set 类型
- 【C/C++】关联容器pair map set
- C++STL之关联容器【map】【set】
- C++-关联容器类型map
- 关联容器Set
- STL关联容器--Set
- 关联容器map set
- 关联容器 set
- set关联容器
- 关联容器 set map
- 关联容器map,set
- 关联容器set map
- C++:关联容器(set,multiset,map,multimap)
- C++/STL关联容器-集合-multiset&set的用法
- C++:关联容器(pair、map、set、multiset)
- c++STL(四)关联容器set与map
- Chapter 14.关联容器set
- STL关联容器—set
- java 网格组布局
- 第1章 算法在计算中的作用
- Hadoop配置文件参数整理(2)---hdfs-site.xml
- [LeetCode]Implement Stack using Queues
- SQL 中条件、循环语句的应用整理
- C++ 10.4 关联容器-----set 类型
- android使用红杏代理更新sdk
- Redis内存管理
- google镜像网站大全
- #ifndef#define#endif防止头文件重复包含, 你不是真的懂
- Volley学习之一AtomicInteger
- Hadoop配置文件参数整理(3)---mapred-site.xml
- java中Collections.sort() 排序函数的用法
- 数据结构:树与二叉树_二叉树_二叉树的基本操作