hash_map::hash_map
[!참고]
이 API는 사용되지 않습니다.대신 unordered_map Class.
빈 또는 모든 복사본 또는 일부 다른 hash_map의 일부입니다에 hash_map을 생성 합니다.
hash_map( );
explicit hash_map(
const Traits& _Comp
);
hash_map(
const Traits& _Comp,
const Allocator& _Al
);
hash_map(
const hash_map& _Right
);
template<class InputIterator>
hash_map(
InputIterator _First,
InputIterator _Last
);
template<class InputIterator>
hash_map(
InputIterator _First,
InputIterator _Last,
const Traits& _Comp
);
template<class InputIterator>
hash_map(
InputIterator _First,
InputIterator _Last,
const Traits& _Comp,
const Allocator& _Al
);
hash_map(
hash_map&& _Right
);
매개 변수
Parameter |
설명 |
_Al |
기본이 hash_map 개체에 사용할 저장소 할당자 클래스 할당자. |
_Comp |
종류의 비교 함수 const성분 에서 기본값으로 설정 하 여 hash_map의 요소를 정렬 하는 데 hash_compare. |
_Right |
생성 된 맵의 복사본으로 속해 있는 hash_map. |
_First |
복사할 요소의 범위에 있는 첫 번째 요소의 위치입니다. |
_Last |
복사할 요소의 범위를 벗어난 첫 번째 요소의 위치입니다. |
설명
모든 생성자는 메모리 스토리지에 hash_map 관리 하 고 나중에 반환할 호출 하 여 할당 기 개체 유형을 저장할 get_allocator.할당자 매개 변수는 클래스 선언 및 전처리 매크로 대체 할당자를 대체 하는 데에 자주 생략 됩니다.
모든 생성자는 hash_map을 초기화합니다.
모든 생성자 함수 개체 형식의 저장소 성분 사이 hash_map의 키 순서를 설정 하는 데 사용 하 고 나중에 반환할 호출 하 여 key_comp.
처음 세 명의 생성자가 빈 초기 hash_map, 둘째, 또한 비교 함수의 형식을 지정 지정 (_Comp) 요소 및 세 번째 순서를 설정 하는 데 사용할 할당자를 지정 하는 명시적으로 입력 (_Al)는 데.키워드 명시적 자동 형식 변환을 특정 종류를 표시 하지 않습니다.
네 번째 생성자는 hash_map의 사본을 지정 _Right.
범위는 다음 세 가지 생성자 복사 [_First, _Last)에서 비교 함수를 클래스의 형식을 지정 하는 명시적인 증가 hash_map의 성분 및 할당자.
마지막 생성기는 hash_map 이동 _Right.
예제
// hash_map_hash_map.cpp
// compile with: /EHsc
#include <ostream>
#include <hash_map>
#include <iostream>
#include <fstream>
#include <string.h>
using namespace std;
typedef char * MyStr;
struct MyInt
{
int i;
friend ostream& operator<<(ostream& ii, MyInt& jj);
MyInt(int j = 0) {
i = j;
}
};
struct greater_str
{
bool operator()(const MyStr & x, const MyStr & y) const {
if (strcmp(x, y) < 0)
return true;
return false;
}
};
struct less_str {
bool operator()(const MyStr & x, const MyStr & y) const
{
if (strcmp(x, y) > 0)
return true;
return false;
}
};
ostream& operator<<(ostream& o, MyInt& j) {
o << j.i;
return o;
}
int main()
{
using namespace stdext;
typedef pair <MyStr, MyInt> Int_Pair;
hash_map<MyStr, MyInt>::iterator hm1_Iter, hm3_Iter, hm4_Iter, hm5_Iter, hm6_Iter, hm7_iter;
hash_map<MyStr, MyInt, hash_compare<MyStr, greater_str> >::iterator hm2_Iter;
// Create an empty hash_map hm0 of key type integer
hash_map<MyStr, MyInt> hm0;
// Create an empty hash_map hm1 with the key comparison
// function of less than, then insert 4 elements
hash_map<MyStr, MyInt, hash_compare<MyStr, less_str> > hm1;
hm1.insert(Int_Pair("one", 0));
hm1.insert(Int_Pair("two", 10));
hm1.insert(Int_Pair("three", 20));
hm1.insert(Int_Pair("four", 30));
hm1.insert(Int_Pair("five", 40));
// Create an empty hash_map hm2 with the key comparison
// function of geater than, then insert 2 elements
hash_map<MyStr, MyInt, hash_compare<MyStr, greater_str> > hm2;
hm2.insert(Int_Pair("one", 10));
hm2.insert(Int_Pair("two", 20));
// Create a hash_map hm3 with the
// allocator of hash_map hm1
hash_map<MyStr, MyInt>::allocator_type hm1_Alloc;
hm1_Alloc = hm1.get_allocator();
hash_map<MyStr, MyInt, hash_compare<MyStr, less_str> > hm3(hash_compare<MyStr, less_str > (), hm1_Alloc);
hm3.insert(Int_Pair("three", 30));
// Create a copy, hash_map hm4, of hash_map hm1
hash_map<MyStr, MyInt, hash_compare<MyStr, less_str> > hm4(hm1);
// Create a hash_map hm5 by copying the range hm1[_First, _Last)
hash_map<MyStr, MyInt>::const_iterator hm1_bcIter, hm1_ecIter;
hm1_bcIter = hm1.begin();
hm1_ecIter = hm1.begin();
hm1_ecIter++;
hm1_ecIter++;
hash_map<MyStr, MyInt> hm5(hm1_bcIter, hm1_ecIter);
// Create a hash_map hm6 by copying the range hm4[_First, _Last)
// and with the allocator of hash_map hm2
hash_map<MyStr, MyInt>::allocator_type hm2_Alloc;
hm2_Alloc = hm2.get_allocator();
hash_map<MyStr, MyInt, hash_compare<MyStr, less_str> > hm6(hm4.begin(), ++hm4.begin(), hash_compare<MyStr, less_str > (), hm2_Alloc);
cout << "hm1 =";
for (hm1_Iter = hm1.begin(); hm1_Iter != hm1.end(); hm1_Iter++)
cout << " " << hm1_Iter -> second;
cout << endl;
cout << "hm2 =";
for (hm2_Iter = hm2.begin(); hm2_Iter != hm2.end(); hm2_Iter++)
cout << " " << hm2_Iter -> second;
cout << endl;
cout << "hm3 =";
for (hm3_Iter = hm3.begin(); hm3_Iter != hm3.end(); hm3_Iter++)
cout << " " << hm3_Iter -> second;
cout << endl;
cout << "hm4 =";
for (hm4_Iter = hm4.begin(); hm4_Iter != hm4.end(); hm4_Iter++)
cout << " " << hm4_Iter -> second;
cout << endl;
cout << "hm5 =";
for (hm5_Iter = hm5.begin(); hm5_Iter != hm5.end(); hm5_Iter++)
cout << " " << hm5_Iter -> second;
cout << endl;
cout << "hm6 =";
for (hm6_Iter = hm6.begin(); hm6_Iter != hm6.end(); hm6_Iter++)
cout << " " << hm6_Iter -> second;
cout << endl;
// Create a copy, hash_map hm7, of hash_map hm1 by moving
hash_map<MyStr, MyInt, hash_compare<MyStr, less_str> >
hm7(move(hm1));
cout << "hm7 =";
for (hm7_Iter = hm7.begin(); hm7_Iter != hm7.end(); hm7_Iter++)
cout << " " << hm7_Iter -> second;
cout << endl;
}
샘플 출력
hm1 = 20 0 30 40 10
hm2 = 10 20
hm3 = 30
hm4 = 20 0 30 40 10
hm5 = 0 20
hm6 = 20
hm7 = 20 0 30 40 10
요구 사항
헤더: <hash_map>
네임 스페이스: stdext