map::map
建構是空的或為其他對應全部或部分的複本的對應。
map( );
explicit map(
const Traits& _Comp
);
map(
const Traits& _Comp,
const Allocator& _Al
);
map(
const map& _Right
);
template<class InputIterator>
map(
InputIterator _First,
InputIterator _Last
);
template<class InputIterator>
map(
InputIterator _First,
InputIterator _Last,
const Traits& _Comp
);
template<class InputIterator>
map(
InputIterator _First,
InputIterator _Last,
const Traits& _Comp,
const Allocator& _Al
);
map(
map&& _Right
);
參數
參數 |
描述 |
_Al |
此對應方法所儲存的配置器類別中,預設為 Allocator。 |
_Comp |
型別 const用來Traits 的比較函式以對應的項目,則會預設為 hash_compare。 |
_Right |
這個建構的集合是複製的對應。 |
_First |
第一個項目的位置會複製的元素範圍內的。 |
_Last |
第一個項目的位置在要複製之項目範圍的。 |
備註
所有建構函式所儲存的配置器物件的型別來處理對應的記憶體儲存,並可透過呼叫 get_allocator後傳回。 配置器參數用於類別宣告和前置處理器巨集通常會省略替代替代的配置器。
所有建構函式初始化其對應。
所有建構函式儲存用來在此對應索引鍵中的命令,並可透過呼叫 key_comp後傳回型別特性的函式物件。
指定空白的初始對應,第二個指定的比較函式 (_Comp) 的型別來建立項目和三個命令明確指定配置器類型 (_Al) 的前三個建構函式會使用。 這個關鍵字 explicit 隱藏特定種類的自動型別轉換。
第四個建構函式的呼叫對應 _Right的複本。
接下來的三個建構函式會從複製範圍 [_First, _Last) 的對應隨著在指定類別 Traits 和配置器的比較函式的型別的明確的加入。
最後一個建構函式將 _Right指定對應的複本。
範例
// map_map.cpp
// compile with: /EHsc
#include <map>
#include <iostream>
int main( )
{
using namespace std;
typedef pair <int, int> Int_Pair;
map <int, int>::iterator m1_Iter, m3_Iter, m4_Iter, m5_Iter, m6_Iter, m7_Iter;
map <int, int, greater<int> >::iterator m2_Iter;
// Create an empty map m0 of key type integer
map <int, int> m0;
// Create an empty map m1 with the key comparison
// function of less than, then insert 4 elements
map <int, int, less<int> > m1;
m1.insert( Int_Pair( 1, 10 ) );
m1.insert( Int_Pair( 2, 20 ) );
m1.insert( Int_Pair( 3, 30 ) );
m1.insert( Int_Pair( 4, 40 ) );
// Create an empty map m2 with the key comparison
// function of geater than, then insert 2 elements
map <int, int, greater<int> > m2;
m2.insert( Int_Pair( 1, 10 ) );
m2.insert( Int_Pair( 2, 20 ) );
// Create a map m3 with the
// allocator of map m1
map <int, int>::allocator_type m1_Alloc;
m1_Alloc = m1.get_allocator( );
map <int, int> m3( less<int>( ), m1_Alloc );
m3.insert( Int_Pair( 3, 30 ) );
// Create a copy, map m4, of map m1
map <int, int> m4( m1 );
// Create a map m5 by copying the range m1[_First, _Last)
map <int, int>::const_iterator m1_bcIter, m1_ecIter;
m1_bcIter = m1.begin( );
m1_ecIter = m1.begin( );
m1_ecIter++;
m1_ecIter++;
map <int, int> m5(m1_bcIter, m1_ecIter);
// Create a map m6 by copying the range m4[_First, _Last)
// and with the allocator of map m2
map <int, int>::allocator_type m2_Alloc;
m2_Alloc = m2.get_allocator( );
map <int, int> m6( m4.begin( ), ++m4.begin( ), less<int>( ), m2_Alloc);
cout << "m1 =";
for ( m1_Iter = m1.begin( ); m1_Iter != m1.end( ); m1_Iter++ )
cout << " " << m1_Iter -> second;
cout << endl;
cout << "m2 =";
for ( m2_Iter = m2.begin( ); m2_Iter != m2.end( ); m2_Iter++ )
cout << " " << m2_Iter -> second;
cout << endl;
cout << "m3 =";
for ( m3_Iter = m3.begin( ); m3_Iter != m3.end( ); m3_Iter++ )
cout << " " << m3_Iter -> second;
cout << endl;
cout << "m4 =";
for ( m4_Iter = m4.begin( ); m4_Iter != m4.end( ); m4_Iter++ )
cout << " " << m4_Iter -> second;
cout << endl;
cout << "m5 =";
for ( m5_Iter = m5.begin( ); m5_Iter != m5.end( ); m5_Iter++ )
cout << " " << m5_Iter -> second;
cout << endl;
cout << "m6 =";
for ( m6_Iter = m6.begin( ); m6_Iter != m6.end( ); m6_Iter++ )
cout << " " << m6_Iter -> second;
cout << endl;
// Create a map m7 by moving m5
cout << "m7 =";
map<int, int> m7(move(m5));
for ( m7_Iter = m7.begin( ); m7_Iter != m7.end( ); m7_Iter++ )
cout << " " << m7_Iter -> second;
cout << endl;
}
Output
m1 = 10 20 30 40
m2 = 20 10
m3 = 30
m4 = 10 20 30 40
m5 = 10 20
m6 = 10
m7 = 10 20
需求
標題: <map>
命名空間: std