共用方式為


multiset::multiset

建構是空的或為其他多重集 (Multiset) 全部或部分的複本的多重集。

multiset( );
explicit multiset (
   const Compare& _Comp
);
multiset (
   const Compare& _Comp,
   const Allocator& _Al
);
multiset(
   const multiset& _Right
);
template<class InputIterator> 
   multiset (
      InputIterator _First,
      InputIterator _Last
   );
template<class InputIterator> 
   multiset (
      InputIterator _First,
      InputIterator _Last,
      const Compare& _Comp
   );
template<class InputIterator>
   multiset (
      InputIterator _First,
      InputIterator _Last,
      const Compare& _Comp,
      const Allocator& _Al
   );
multiset(
   multiset&& _Right
);

參數

參數

描述

_Al

為這個多重集 (Multiset) 方法所儲存的配置器類別中,預設為 Allocator

_Comp

型別 const用來Compare 的比較函式以多重集 (Multiset) 的項目,則會預設為 Compare

_Right

已建構的多重集是複本的多重集。

_First

第一個項目的位置會複製的元素範圍內的。

_Last

第一個項目的位置在要複製之項目範圍的。

備註

所有建構函式所儲存的配置器物件的型別來處理多重集 (Multiset) 的記憶體儲存,並可透過呼叫 get_allocator後傳回。 配置器參數用於類別宣告和前置處理器巨集通常會省略替代替代的配置器。

所有建構函式初始化其多重集。

所有建構函式儲存用來在多重集 (Multiset) 索引鍵中的命令,並可透過呼叫 key_comp後傳回型別的函式物件比較。

指定空的初始多重集,第二個指定的比較函式 (_Comp) 的型別來建立項目和三個命令明確指定配置器類型 (_Al) 的前三個建構函式會使用。 關鍵字 explicit 隱藏特定種類的自動型別轉換。

第四個建構函式指定多重集 _Right的複本。

接下來的三個建構函式會從複製範圍 [_First, _Last) 的多重集隨著在指定比較函式和配置器類型的明確的加入。

最後一個建構函式將 _Right指定多重集 (Multiset) 的複本。

範例

// multiset_ctor.cpp
// compile with: /EHsc
#include <set>
#include <iostream>

int main( )
{
   using namespace std;
   multiset <int>::iterator ms1_Iter, ms2_Iter, ms3_Iter;
   multiset <int>::iterator ms4_Iter, ms5_Iter, ms6_Iter, ms7_Iter;

   // Create an empty multiset ms0 of key type integer
   multiset <int> ms0;

   // Create an empty multiset ms1 with the key comparison
   // function of less than, then insert 4 elements
   multiset <int, less<int> > ms1;
   ms1.insert( 10 );
   ms1.insert( 20 );
   ms1.insert( 20 );
   ms1.insert( 40 );

   // Create an empty multiset ms2 with the key comparison
   // function of geater than, then insert 2 elements
   multiset <int, greater<int> > ms2;
   ms2.insert( 10 );
   ms2.insert( 20 );

   // Create a multiset ms3 with the 
   // allocator of multiset ms1
   multiset <int>::allocator_type ms1_Alloc;
   ms1_Alloc = ms1.get_allocator( );
   multiset <int> ms3( less<int>( ), ms1_Alloc );
   ms3.insert( 30 );

   // Create a copy, multiset ms4, of multiset ms1
   multiset <int> ms4( ms1 );

   // Create a multiset ms5 by copying the range ms1[_First, _Last)
   multiset <int>::const_iterator ms1_bcIter, ms1_ecIter;
   ms1_bcIter = ms1.begin( );
   ms1_ecIter = ms1.begin( );
   ms1_ecIter++;
   ms1_ecIter++;
   multiset <int> ms5( ms1_bcIter, ms1_ecIter );

   // Create a multiset ms6 by copying the range ms4[_First, _Last)
   // and with the allocator of multiset ms2
   multiset <int>::allocator_type ms2_Alloc;
   ms2_Alloc = ms2.get_allocator( );
   multiset <int> ms6( ms4.begin( ), ++ms4.begin( ), less<int>( ), ms2_Alloc );

   cout << "ms1 =";
   for ( ms1_Iter = ms1.begin( ); ms1_Iter != ms1.end( ); ms1_Iter++ )
      cout << " " << *ms1_Iter;
   cout << endl;
   
   cout << "ms2 = " << *ms2.begin( ) << " " << *++ms2.begin( )
   << endl;

   cout << "ms3 =";
   for ( ms3_Iter = ms3.begin( ); ms3_Iter != ms3.end( ); ms3_Iter++ )
      cout << " " << *ms3_Iter;
   cout << endl;

   cout << "ms4 =";
   for ( ms4_Iter = ms4.begin( ); ms4_Iter != ms4.end( ); ms4_Iter++ )
      cout << " " << *ms4_Iter;
   cout << endl;

   cout << "ms5 =";
   for ( ms5_Iter = ms5.begin( ); ms5_Iter != ms5.end( ); ms5_Iter++ )
      cout << " " << *ms5_Iter;
   cout << endl;

   cout << "ms6 =";
   for ( ms6_Iter = ms6.begin( ); ms6_Iter != ms6.end( ); ms6_Iter++ )
      cout << " " << *ms6_Iter;
   cout << endl;

   // Create a set by moving s5
   set<int> ms7(move(ms5));
   cout << "ms7 =";
   for ( ms7_Iter = ms7.begin( ); ms7_Iter != ms7.end( ); ms7_Iter++ )
      cout << " " << *ms7_Iter;
   cout << endl;
}

Output

ms1 = 10 20 20 40
ms2 = 20 10
ms3 = 30
ms4 = 10 20 20 40
ms5 = 10 20
ms6 = 10
ms7 = 10 20

需求

標題: <set>

命名空間: std

請參閱

參考

multiset Class

標準樣板程式庫