C++/Set Multiset/multiset
Содержание
Add elements into an integer set and output all added elements
/* 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;
}
/*
6 5 5 4 3 2 1
*/
Assign elements to another multiset with ascending order
/* 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());
// print all elements of the copy
copy (coll2.begin(), coll2.end(),
ostream_iterator<int>(cout," "));
cout << endl;
}
/*
6 5 5 4 3 2 1
1 2 3 4 5 5 6
*/
Instantiating STL set and multiset of Integers
#include <set>
int main ()
{
using namespace std;
set <int> setIntegers;
multiset <int> msetIntegers;
return 0;
}
Use std::copy to print all elements in a multiset
#include <iostream>
using std::cout;
using std::endl;
#include <set> // multiset class-template definition
#include <algorithm> // copy algorithm
#include <iterator> // ostream_iterator
int main()
{
int a[ 10 ] = { 7, 22, 9, 1, 18, 30, 100, 22, 85, 13 };
std::multiset< int, std::less< int > > intMultiset;
std::ostream_iterator< int > output( cout, " " );
// insert elements of array a into intMultiset
intMultiset.insert( a, a + 10 );
cout << "\nAfter insert, intMultiset contains:\n";
std::copy( intMultiset.begin(), intMultiset.end(), output );
cout << endl;
return 0;
}
/*
After insert, intMultiset contains:
1 7 9 13 18 22 22 30 85 100
*/