如何访问和删除多重集中的倒数第二个元素?
How can I access and erase every 2nd last element from a multiset?
我最近试图从多集容器中访问倒数第二个元素。在这里,我想首先从容器中打印每个倒数第二个元素,然后将其从容器中删除。这个过程一直持续到容器的大小达到1。
我目前对这个过程的方法如下-
int n;cin>>n;
multiset<int>st;
for(int i=0;i<n;++i)
{
int x;cin>>x;st.insert(x);
}
while(st.size()!=1)
{
auto it=st.rbegin();
prev(it,1);
cout<<*it<<" ";
st.erase(*it);
}
在这里,我对给定案例的预期结果是-
6
0 0 1 0 1 1
ans- 1 1 0 0 0
提前致谢。
找到问题的答案。这里因为我正在使用多重集,所以我不小心删除了 (*it) 的所有副本。所以我只需要先找到值,然后从集合中删除。
st.erase(find(*it))
我最近试图从多集容器中访问倒数第二个元素。在这里,我想首先从容器中打印每个倒数第二个元素,然后将其从容器中删除。这个过程一直持续到容器的大小达到1。
我目前对这个过程的方法如下-
int n;cin>>n;
multiset<int>st;
for(int i=0;i<n;++i)
{
int x;cin>>x;st.insert(x);
}
while(st.size()!=1)
{
auto it=st.rbegin();
prev(it,1);
cout<<*it<<" ";
st.erase(*it);
}
在这里,我对给定案例的预期结果是-
6
0 0 1 0 1 1
ans- 1 1 0 0 0
提前致谢。
找到问题的答案。这里因为我正在使用多重集,所以我不小心删除了 (*it) 的所有副本。所以我只需要先找到值,然后从集合中删除。
st.erase(find(*it))