multiset的常用操作 1.insert 插入 参数可以是某个具体的val值如:int变量名,常数,也可以是某个迭代器的区间,如数组的区间
int a = 2, b[3] = {0, 1, 2};
st.insert(a);//插入2
st.insert(b, b + 3);插入0, 1, 2
2.erase 删除 参数可以是某个具体的val值如insert函数,也可以是某个具体的迭代器或迭代器的区间
st.erase(2);//删除2
st.erase(st.find(2));//find是返回参数对应的迭代器,这里整行代码的意思就是删除2这个元素
st.erase(st.begin(), st.end());//删除全部
3.begin 无参数,返回值是开头的值的迭代器(升序情况下最小值)
st.insert(2);st.insert(3);
st.begin();//输出即为2
4.end 无参数,返回值末尾的值的迭代器(不带内容,前一位数是升序最大值)
st.insert(2);st.insert(3);
st.end();//输出即为最后一个元素之后的值,无实际值
5.lower_bound 升序情况下返回大于等于x的最小值的迭代器,若没有则返回end(),常用于找到小于x的最大值
//若容器中没有大于等于2的值,则下方it的值为end()
auto it = st.lower_bound(2)//此时it为st容器中大于等于2的最小值对应的迭代器
--it;//此时it为st容器中小于2的最大值对应的迭代器
6.upper_bound 升序情况下返回大于x的最小值的迭代器,若没有则返回end(),常用于找到大于x的最小值
//若容器中没有大于2的值,则下方it的值为end()
auto it = st.lower_bound(2)//此时it为st容器中大于2的最小值对应的迭代器
7.find 返回对应val值的迭代器,若没有返回end()
auto it = st.find(2);//返回2这个值对应的迭代器,若容器中没有2的值则返回end()
8.size 返回set的大小,即有多少数
int size = st.size();
9.empty 返回set是否为空,空为true,非空为false
st.empty()//返回set容器是否为空。若为空则为true,非空则为false
10.count 返回val值的个数
int cnt = st.count(2);//返回set容器中2的个数
—— 本文来自火龙信奥(义乌睿码科技):义乌青少年信息学奥赛与编程教育平台,专注 CSP-J/S、NOIP、GESP 竞赛培训,线上线下融合教学,助力编程升学。网址:hlcoding.com