###《Effective STL》--Chapter3
2015 단어 effective
클릭하여 Evernote 원문 보기 。
#@author: gr
#@date: 2014-09-13
#@email: [email protected]
Chapter3 연관 컨테이너
Topic 22: set 또는 multiset의 키를 직접 수정하지 마십시오.
요소의 값을 수정하면 다음 다섯 가지 절차를 통해 유형 변환을 피할 수 있습니다.
struct IDNumberLess : public binary_function<Employee, Employee, bool> {
bool operator() (const Employee& lhs, const Employee& rhs){
return lhs.idNumber() < rhs.idNumber();
}
}
/* 1. */
set<Employee, IDNumberLess> se;
//...
Employee selectedID;
iterator it = se.find(selectedID);
if (it != se.end()){
/* 2. */
Employee tmp(*it);
/* 3. */
tmp.setTitle("hello");
/* 4. */
se.erase(it++);
/* 5. */
se.insert(it, tmp);
}
Topic 23: 관련 용기를 정렬된vector로 대체하는 것을 고려합니다
Topic24: 효율이 중요할 때 맵::operator[]와 맵:insert 사이에서 신중하게 선택하십시오.
이 조항은 말하자면 매우 간단하다. 바로 사용
map
할 때 업데이트 작업이라면 사용map::operator[]
이다.새 값을 삽입할 때 사용하는 경우map::insert
.map<int, Widget> m;
// ,m key 1, operator[]
m[1] = 1.5;
// , key 2 , operator[], insert
m.insert(map<int, Widget>::value_type(2, 1.50));
이 문제의 기원은
map::operator[]
낡은 값을 업데이트할 수도 있고 새 값을 삽입할 수도 있지만 map::operator[]
을 사용하여 새 값을 삽입하는 효율이 매우 낮다는 데 있다. 그는 먼저 기본 구조 함수를 호출하여 기본 대상을 만들고 인용을 되돌려 그 값을 수정한다.마지막으로 하나의 함수 판단이 업데이트인지 삽입인지 각각 호출map::operator[]
과map::insert
을 스스로 실현할 수 있다.Topic 25: 비표준 산열 용기 익숙
표준 STL 컨테이너 외에
hash_set
, hash_multiset
, hash_map
, hash_multimap
등 다른 채널의 컨테이너도 사용할 수 있습니다.서로 다른 제공자가 실현하는 형식도 각기 다르다.SGI
의 실현은 원소를 한 방향의 체인 테이블에 놓고Dinkumware
의 실현은 양방향 체인 테이블을 사용하지만 메모리 소모가 더욱 크다.자신의 실제 상황에 따라 선택하다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[JPA] 연관 관계 매핑 ( 양방향 )기존에 소스는 Member -> Team 으로만 단방향 매핑을 하였기 때문에 Member만이 Team을 알 수 있었습니다. 따라서 mappedBy="team"을 설정 함으로써 Member.team과 연관관계를 맺게됩...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.