STL【容器】| 【09】setmultiset

STL【容器】| 【09】setmultiset,第1张

文章目录

  • 一、set/multiset

    • 1、常用成员函数
    • 2、案例


一、set/multiset

集合是按照特定顺序存储唯一元素的class="superseo">容器;

  • 一般使用红黑树来实现;
  • 用于查询居多;

multiset

  • 不能对元素进行修改;
  • 一般对元素进行删除和插入 *** 作;
template < class T,                        // set::key_type/value_type
           class Compare = less<T>,        // set::key_compare/value_compare
           class Alloc = allocator<T>      // set::allocator_type
           > class set;

1、常用成员函数
  • begin():返回第一个元素;
  • end():返回最后一个元素后面一个位置;
  • rbegin():返回容器最后一个元素;
  • rend():返回第一个元素前的一个位置;
  • size():元素个数;
  • max_size():最大元素个数;
  • empty():判断是否为空;
  • emplace():插入元素,能够自动构造对象;
  • emplace_hint():根据位置插入;
  • insert():删除指定值的元素;
  • insert(pos, elem):在pos插入elem
  • insert(pos, n, elem):pos位置插入n个元素elem;
  • erase(cmp):删除满足条件的元素;
  • erase():删除一个或几个元素;
  • swap():交换容器;
  • clear():删除双端队列容器中的所有元素;
  • key_comp():返回比较对象;
  • value_comp():返回比较对象;
  • find():获取元素的迭代器;
  • count():查看是否具有特定值的元素;
  • lower_bound():将迭代器返回到下限;
  • upper_bound():将迭代器返回到上限;
  • equal_range():获取相等元素的范围;
2、案例
#include 
#include 

using namespace std;

set<int> s = {19, 22, 11}; 

int main() {
	
	//cout << "max_size: " << s.max_size() << endl;
	
	// ret: 4
	//s.insert(100);
	//cout << "size: " << s.size() << endl;
	// ret: 5
	//s.insert(s.begin(), 110);
	//cout << "size: " << s.size() << endl;
	
	// ret: 2
	//s.erase(19);
	//cout << "size: " << s.size() << endl;
	
	// ret: 7 8
	//set s2 = {7, 8};
	//s.swap(s2);
	//for(auto& i:s) {
	//	cout << i << " ";
	//}
	
	//s.clear();
	//for(auto& i:s) {
	//	cout << i << " ";
	//}
	
	// ret: 110 19 22 11 100
	//s.emplace(100);
	//s.emplace_hint(s.begin(), 110);
	//for(auto& i:s) {
	//	cout << i << " ";
	//}
	

	// ret: 1 对象的比较	
	//auto mycomp = s.key_comp();
	//cout << mycomp(1,2) << endl; 
	
	// ret:19 
	//auto it = s.find(19);
	//if(it != s.end())
	//	cout << *it << endl;
	
	// ret:find!!!
	//if(s.count(19)!=0)
	//	cout << "find!!!" << endl;
	//else 
	//	cout << "no!!!" << endl;

	// ret:19 
	//auto it = s.lower_bound(19);
	//cout << *it << endl; 
	 
	// ret:22
	//auto it = s.upper_bound(19);
	//cout << *it << endl;	 
	
	// ret: 
	//auto it = s.equal_range(19);
	//cout << "lower_bound:" << *it.first << endl;
	//cout << "upper_bound:" << *it.second << endl;		 
	 
	return 0;
} 

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/567727.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-09
下一篇 2022-04-09

发表评论

登录后才能评论

评论列表(0条)

保存