set和multiset:(两者用法基本相似,一个可重复一个不可重复)
1.一个容器,它其中所包含的元素的值是唯一的,集合中的元素按一定的顺序排列。
2.在插入操作和删除操作上比向量(vector)快,但查找或添加末尾的元素时会有些慢。
3.和所有关联式容器类似,通常使用平衡二叉树完成,事实上,set和multiset通常以红黑树实作而成。
4.自动排序的优点是使得搜寻元素时具有良好的性能,具有对数时间复杂度。但是造成的一个缺点就是:
不能直接改变元素值。因为这样会打乱原有的顺序。
改变元素值的方法是:先删除旧元素,再插入新元素。
存取元素只能通过迭代器,从迭代器的角度看,元素值是常数。
#include <set>
构造:
1.explicit set(const Compare&=compare());
set<int,less<int> > set1; //less<int>是一个标准类,用于形成升序排列函数对象,降序排列是用greater<int>。
2.Template<class InputIterator> set(InputIterator, InputIterator,\ const Compare&=compare());
set<int ,less<int> >set2(vector1.begin(),vector1.end());
3.set(const set<Key,Compare&>);
set<int ,less<int> >set3(set2);
方法:
begin() 返回指向第一个元素的迭代器
clear() 清除所有元素
count() 返回某个值元素的个数
empty() 如果集合为空,返回true(真)
end() 返回指向最后一个元素之后的迭代器,不是最后一个元素
equal_range() 返回集合中与给定值相等的上下限的两个迭代器
erase() 删除集合中的元素
find() 返回一个指向被查找到元素的迭代器
get_allocator() 返回集合的分配器
insert() 在集合中插入元素
lower_bound() 返回指向大于(或等于)某值的第一个元素的迭代器
key_comp() 返回一个用于元素间值比较的函数
max_size() 返回集合能容纳的元素的最大限值
rbegin() 返回指向集合中最后一个元素的反向迭代器
rend() 返回指向集合中第一个元素的反向迭代器
size() 集合中元素的数目
swap() 交换两个集合变量
upper_bound() 返回大于某个值元素的迭代器
value_comp() 返回一个用于比较元素间的值的函数
STL中与set相关的算法:
std::set_intersection() :这个函数是求两个集合的交集。
std::set_union() :求两个集合的并集
std::set_difference():差集
std::set_symmetric_difference():得到的结果是第一个迭代器相对于第二个的差集并 上第二个相当于第一个的差集。
struct compare{
bool operator ()(string s1,string s2){
return s1>s2;
}///自定义一个仿函数
};
std::set<string,compare> s
string str[10];
string *end = set_intersection(s.begin(),s.end(),s2.begin(),s2.end(),str,compare());//求交集,返回值指向str最后一个元素的尾端
end = std::set_union(s.begin(),s.end(),s2.begin(),s2.end(),str,compare());//并集
end = std::set_difference(s.begin(),s.end(),s2.begin(),s2.end(),str,compare());//s2相对于s1的差集
end = std::set_difference(s2.begin(),s2.end(),s.begin(),s.end(),str,compare());//s1相对于s2的差集
end = std::set_symmetric_difference(s.begin(),s.end(),s2.begin(),s2.end(),str,compare());//上面两个差集的并集
分享到:
相关推荐
一共四个doc文件,list综合实例、multimap和map的实例、set和multiset的综合实例、vector综合实例
学习set参考资料,保证你会最快的学会set和multiset,PDF将详细介绍
10.2.8Set和multiset容器 111 10.2.9Map和multimap容器 118 10.2.10容器共性机制研究 123 10.2.11其他 124 10.3算法 125 10.3.1算法基础 125 10.3.2STL算法中函数对象和谓词 138 10.3.3常用的遍历算法 148 10.3.4...
用AVL-tree数据结构作为底层机制,以STL底层空间配置器和iterator_traits编程技法实作出一个独立的关联式容器(map, set, multimap, multiset),并对外提供接口实现和STL完全兼容的容器。
6.5.2 set和multiset举例 46 6.6 map和multimap 49 6.6.1 map和multimap的能力 50 6.6.2 将map视为关联式数组 52 6.6.3 map和multimap运用示例 52 6.6.4 综合示例 55 6.7 其它STL容器 57 6.7.1 HashTable 59 6.7.2 ...
条款22: 避免对set和multiset的键值进行修改 条款23: 考虑用排序的vector代替关联容器 条款24: 当效率很关键时尽量用map::insert代替map::operator 条款25: 让自己熟悉非标准的hash容器 迭代器 条款26: 尽量...
第10章 set 和 multiset 24.第11章 算法简介 25.第11章 函数对象简介 26.第11章 算法 元素计数 27.第11章 算法 最大值和最小值 28.第11章 算法 查找算法(1) 29.第11章 算法 查找算法(2) 30.第11章 ...
条款22: 避免对set和multiset的键值进行修改 条款23: 考虑用排序的vector代替关联容器 条款24: 当效率很关键时尽量用map::insert代替map::operator 条款25: 让自己熟悉非标准的hash容器 迭代器 条款26: 尽量...
条款22:避免原地修改set和multiset的键 条款23:考虑使用有序vector代替关联容器 条款24:当关乎效率时应该在map::operator[]和map-insert之间仔细选择 条款25:熟悉非标准散列容器 迭代器 条款26:尽量用...
避免使用vector<bool><br>关联容器 条款19:了解相等和等价的区别 条款20:为指针的关联容器指定比较类型 条款21:永远让比较函数对相等的值返回false 条款22:避免原地修改set和multiset的键 条款23...
2.7.4 线性筛(同时得到欧拉函数和素数表) . . . . . . . . . . . . . . . . . . 32 2.8 高斯消元(浮点数) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 2.9 FFT . . . . . . . . . . ...
STLSTL_multisetSTL_set STL_multiset 方法:multisetst; 定义了一个multiset变量st,st里面可以存放T类型数据,并且能自动排序。开始st为空 排序规则:表达式”a<b为true,则a排在b前面 可用的方法 目的 格式 ...
1-1-10 数组和指针技术的不同......................................... 14 1-2 C++存储技术........................................................ 15 1-2 一I C++存储类型.....................................
这是一个Swift微框架,实现了PredicateSet和一个由字典支持的Multiset。 用 多重集: // Union Multiset ( 1 , 2 , 3 ) + Multiset ( 3 , 4 , 5 ) // == Multiset(1, 2, 3, 3, 4, 5) // Difference Multiset ( 1 ,...
头文件包含 set 、 multiset 两个类模版,这里要描述的概念与map非常相似,甚至连成员函数都几乎一样,所以这篇随笔会很短。 set set如果翻译成中文应该是集合的意思,这里更确切的说是 唯一有序集合 ,性质与map...
红黑树是一种很有意思的平衡检索树。...在C++ STL中,很多部分(目前包括set, multiset, map, multimap)应用了红黑树的变体(SGI STL中的红黑树有一些变化,这些修改提供了更好的性能,以及对set操作的支持)。
本实验主要练习容器set、multiset、map、multimap的使用方法,插入迭代器、反向迭代器的用法,以及四种非变异算法的基本用法。 实验器材: VScode 实验内容: 一.回顾以上四种容器相关的例题(不作为实验报告内容)...
set只有值,可以认为只有一个数据,并且set中元素不可以重复且自动排序,如果需要重复则使用multiset,要说区别的话,存储的东西不一样,应用场景不一样,支持的操作也不一样,很多不同。 map和set支持快速查找和...
标准STL序列容器:vector、string、deque和list。 标准STL关联容器:set、multiset、map和multimap。