C++/Set Multiset/multiset erase
Содержание
Demonstrating multiset erase a found element
#include <iostream>
#include <cassert>
#include <list>
#include <string>
#include <set>
using namespace std;
#include <functional>
int main()
{
string s("There is no distinctly native American criminal class");
list<char> list1(s.begin(), s.end());
// Put the characters in list1 into multiset1:
multiset<char> multiset1;
copy(list1.begin(), list1.end(),inserter(multiset1, multiset1.end()));
multiset1.erase("a");
multiset<char>::iterator i = multiset1.find("e");
multiset1.erase(i);
multiset<char>::iterator k;
for (k = multiset1.begin(); k != multiset1.end(); ++k)
cout << *k;
return 0;
}
/*
ATccccdeeehiiiiiiilllmmnnnnnorrrsssstttvy"
*/
Demonstrating multiset erase functions
#include <iostream>
#include <cassert>
#include <list>
#include <string>
#include <set>
using namespace std;
#include <functional>
int main()
{
string s("There is no distinctly native American criminal class");
list<char> list1(s.begin(), s.end());
// Put the characters in list1 into multiset1:
multiset<char> multiset1;
copy(list1.begin(), list1.end(),inserter(multiset1, multiset1.end()));
multiset1.erase("a");
multiset<char>::iterator k;
for (k = multiset1.begin(); k != multiset1.end(); ++k)
cout << *k;
return 0;
}
/*
ATccccdeeeehiiiiiiilllmmnnnnnorrrsssstttvy"
*/
Demonstrating multiset erase functions: erase a range
#include <iostream>
#include <cassert>
#include <list>
#include <string>
#include <set>
using namespace std;
#include <functional>
int main()
{
string s("There is no distinctly native American criminal class");
list<char> list1(s.begin(), s.end());
// Put the characters in list1 into multiset1:
multiset<char> multiset1;
copy(list1.begin(), list1.end(),inserter(multiset1, multiset1.end()));
multiset1.erase("a");
multiset<char>::iterator i = multiset1.find("e");
multiset<char>::iterator j = multiset1.find("v");
multiset1.erase(i, j);
multiset<char>::iterator k;
for (k = multiset1.begin(); k != multiset1.end(); ++k)
cout << *k;
return 0;
}
/*
ATccccdvy
*/
Remove all elements up to element with value 3
/* The following code example is taken from the book
* "The C++ Standard Library - A Tutorial and Reference"
* by Nicolai M. Josuttis, Addison-Wesley, 1999
*
* (C) Copyright Nicolai M. Josuttis 1999.
* Permission to copy, use, modify, sell and distribute this software
* is granted provided this copyright notice appears in all copies.
* This software is provided "as is" without express or implied
* warranty, and with no claim as to its suitability for any purpose.
*/
#include <iostream>
#include <set>
#include <algorithm>
#include <iterator>
using namespace std;
int main()
{
/* type of the collection:
* - duplicates allowed
* - elements are integral values
* - descending order
*/
typedef multiset<int,greater<int> > IntSet;
IntSet coll1; // empty multiset container
// insert elements in random order
coll1.insert(4);
coll1.insert(3);
coll1.insert(5);
coll1.insert(1);
coll1.insert(6);
coll1.insert(2);
coll1.insert(5);
// iterate over all elements and print them
IntSet::iterator pos;
for (pos = coll1.begin(); pos != coll1.end(); ++pos) {
cout << *pos << " ";
}
cout << endl;
// assign elements to another multiset with ascending order
multiset<int> coll2(coll1.begin(),
coll1.end());
// remove all elements up to element with value 3
coll2.erase (coll2.begin(), coll2.find(3));
// print all elements of the copy
copy (coll2.begin(), coll2.end(),
ostream_iterator<int>(cout," "));
cout << endl;
}
/*
6 5 5 4 3 2 1
3 4 5 5 6
*/
Remove all elements with value 5
/* The following code example is taken from the book
* "The C++ Standard Library - A Tutorial and Reference"
* by Nicolai M. Josuttis, Addison-Wesley, 1999
*
* (C) Copyright Nicolai M. Josuttis 1999.
* Permission to copy, use, modify, sell and distribute this software
* is granted provided this copyright notice appears in all copies.
* This software is provided "as is" without express or implied
* warranty, and with no claim as to its suitability for any purpose.
*/
#include <iostream>
#include <set>
#include <algorithm>
#include <iterator>
using namespace std;
int main()
{
/* type of the collection:
* - duplicates allowed
* - elements are integral values
* - descending order
*/
typedef multiset<int,greater<int> > IntSet;
IntSet coll1; // empty multiset container
// insert elements in random order
coll1.insert(4);
coll1.insert(3);
coll1.insert(5);
coll1.insert(1);
coll1.insert(6);
coll1.insert(2);
coll1.insert(5);
// iterate over all elements and print them
IntSet::iterator pos;
for (pos = coll1.begin(); pos != coll1.end(); ++pos) {
cout << *pos << " ";
}
cout << endl;
// assign elements to another multiset with ascending order
multiset<int> coll2(coll1.begin(),
coll1.end());
// remove all elements with value 5
int num;
num = coll2.erase (5);
cout << num << " element(s) removed" << endl;
// print all elements of the copy
copy (coll2.begin(), coll2.end(),
ostream_iterator<int>(cout," "));
cout << endl;
}
/*
6 5 5 4 3 2 1
2 element(s) removed
1 2 3 4 6
*/
Using the erase Member Function on a Multiset
#include <set>
#include <iostream>
using namespace std;
typedef multiset <int> MSETINT;
int main ()
{
MSETINT msetIntegers;
msetIntegers.insert (43);
msetIntegers.insert (78);
msetIntegers.insert (78);
msetIntegers.insert (-1);
msetIntegers.insert (124);
MSETINT::const_iterator iElement;
cout << msetIntegers.size () << " elements.";
for ( iElement = msetIntegers.begin (); iElement != msetIntegers.end (); ++ iElement )
cout << *iElement << endl;
int nNumberToErase = 2;
cout << msetIntegers.count (nNumberToErase);
cout << nNumberToErase << endl;
msetIntegers.erase (nNumberToErase);
cout << msetIntegers.size () << " elements.";
for ( iElement = msetIntegers.begin (); iElement != msetIntegers.end (); ++ iElement )
cout << *iElement << endl;
return 0;
}