C++ multiset erase会删除所有元素

Posted 软件工程小施同学

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++ multiset erase会删除所有元素相关的知识,希望对你有一定的参考价值。

会删除所有比较函数相同的元素

c.erase(elem)

删除与elem相等的所有元素,返回被移除的元素个数。

c.erase(pos)

移除迭代器pos所指位置元素,无返回值。

c.erase(beg,end)

移除区间[beg,end)所有元素,无返回值。

 

#include <iostream>
#include <set>
using namespace std;
 
class stru{
	public:
   	 	stru(int a, int b): x(a), y(b){}
		int x;
   	 	int y;
};
 
bool operator<(const stru& a, const stru& b)    //比较的是x的值
{
    return a.x < b.x;
}
 
int main()
{
    //创建
    multiset<stru> st;
    
    //插入
    st.insert(stru(9, 40));   //添加成功,因为multiset可以有重复的值,也就是说有x = 10的stru也可以。
    st.insert(stru(9, 41));    //添加成功
	st.insert(stru(10, 42));
	st.insert(stru(10, 43));
    
    //查看
    for (auto it = st.rbegin(); it != st.rend(); it++)   //10-40 9-43 9-45 8-40 7-35 6-30 5-25 4-20 3-15 2-10 1-5 0-0
        cout<<(*it).x<<"-"<<(*it).y<<" ";
    cout<<endl;
    
    st.erase(stru(10, 43));           //和上面一样,只会找x = 9的第一项。
	
    //查看
    for (auto it = st.rbegin(); it != st.rend(); it++)   //10-40 9-43 9-45 8-40 7-35 6-30 5-25 4-20 3-15 2-10 1-5 0-0
        cout<<(*it).x<<"-"<<(*it).y<<" ";
    cout<<endl;
	
}

 

 

以上是关于C++ multiset erase会删除所有元素的主要内容,如果未能解决你的问题,请参考以下文章

C++ stl multiset.erase的误用

STL——容器(Set & multiset)的删除 erase

STL——容器(Set & multiset)的删除 erase

C++中set与multiset的区别。

c++ STL map 中erase()后++会指向那个元素?以及erase后map将会自动做啥操作(也就是会怎么变动)?

C++中set与multiset的区别。