set、multiset中常用函数总结一(find、count、insert和erase)
Sets are typically implemented asbinary search trees.set容器和multiset容器是实现了红黑树(Red-Black Tree)的平衡二叉搜索树的数据结构,set和multiset唯一不同的是multiset允许插入相同的元素。template < class T,// set::...
Sets are typically implemented as binary search trees.set容器和multiset容器是实现了红黑树(Red-Black Tree)的平衡二叉搜索树的数据结构,set和multiset唯一不同的是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
find()(查找元素)
iterator find(const key_type& __x)
//查找__x,若找到返回其迭代器,若未找到返回end();
const_iterator find(const key_type& __x) const
//大致同上
count()(计数元素)
size_type count(const key_type& __x) const
//返回__x在容器中出现的次数,set中值是唯一的故只能返回0或1,而multiset可以返回大于1的数
insert()(插入元素)
std::pair<iterator, bool> insert(const value_type& __x)
//插入元素__x,返回一个pair,pair的第一个元素为指向该元素的迭代器,若插入成功则pair的第二个元素为true,否则为false
std::pair<iterator, bool> insert(value_type&& __x)
//大致同上,其中&&为右值引用
iterator insert(const_iterator __position, const value_type& __x)
//从__position指向处开始插入元素__x,虽然最终结果都一样,但会影响插入的效率,返回值为该元素的迭代器
iterator insert(const_iterator __position, value_type&& __x)
//大致同上,其中&&为右值引用
template<typename _InputIterator>
void insert(_InputIterator __first, _InputIterator __last)
//插入__first和__last间的元素
void insert(initializer_list<value_type> __l)
//initializer_list是C++11提供的新类型,用于表示某种特定类型的值的数组,和set一样,initializer_list也是一种模板类型
//CSDN博客:https://blog.csdn.net/qq_40889820
#include<iostream>
#include<set>
using namespace std;
int main()
{
set<int> s;
set<int>::iterator it;
pair< set<int>::iterator,bool > pa;
s.insert(1);
s.insert(5);
s.insert(4);
s.insert(9);
for(it=s.begin();it!=s.end();it++)
cout<<*it<<" ";cout<<endl;
pa=s.insert(4);//原先set已存在元素4,故pa的第二个值为false
if(!pa.second) it=pa.first;//it指向4
s.insert(it,10);
int a[4]={7,11,45,12};
s.insert(a,a+4);//插入a数组元素
for(it=s.begin();it!=s.end();it++)
cout<<*it<<" ";
}
erase()(删除元素)
iterator erase(const_iterator __position)
//删除__position指向的元素,返回值为删掉值的后面一个值的迭代器,若被删掉的最后一个值原本是容器中的最后一个值返回end()
void erase(iterator __position)
//大致同上,空类型
size_type erase(const key_type& __x)
//删除值__x,返回值为删除__x的个数
iterator erase(const_iterator __first, const_iterator __last)
//删除__first和__last间的值,返回值为删掉的最后一个值的后面一个值的迭代器,若被删掉的最后一个值原本是容器中的最后一个值返回end()
//CSDN博客:https://blog.csdn.net/qq_40889820
#include<iostream>
#include<set>
using namespace std;
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
set<int> s;
int a[5]={1,8,4,7,5};
s.insert(a,a+5);
cout<<*s.begin()<<endl;//输出1
cout<<*s.erase(s.begin())<<endl;//输出4
cout<<s.erase(1);//输出0
cout<<*s.erase(s.find(7),s.end());//输出2,返回的是s.end(),输出的是元素个数
}
更多推荐
所有评论(0)