표준 템 플 릿 라 이브 러 리 (STL) 기초

2837 단어
STL 의 언어 환경 에서 vector, stack 등 데이터 구 조 를 이야기 할 때, 그들 은 통상 적 으로 container class 라 고 부른다
"list" 는 STL 에서 양 방향 링크 입 니 다.
"deque" 는 doubly ended quue 입 니 다. 임의의 한 끝 에서 데 이 터 를 추가 하거나 삭제 할 수 있 습 니 다.
흔히 볼 수 있 는 container 에 value 가 정의 되 어 있 습 니 다.type 과 sizetype。"value type" 은 container 에 저 장 된 데이터 의 형식 입 니 다. 예 를 들 어 list < int >: valuetype 은 int;"size type" 은 unsigned int 이 고 함수 size () 의 반환 값 형식 입 니 다.
iterator 는 container 의 데 이 터 를 방문 할 수 있 는 대상 으로 genealization of pointer 입 니 다. 보통 지침 을 통 해 이 루어 집 니 다. 지침 은 아니 지만.+ + 를 통 해서, --, *, = =,! =등 을 처리 하지만 모든 iterator 가 이 조작 자 를 지원 하 는 것 은 아 닙 니 다.
iterator 는 다음 과 같은 몇 가지 유형 으로 나 눌 수 있 습 니 다.
forward iterator: ++ works
bidirectional iterator: ++, -- works
random access iterator: ++, -- and random access works
그 중에서 각 종 류 는 두 가지 로 나 눌 수 있다. constant 와 mutable 이다.constant 는 읽 기만 하고 가리 키 는 내용 을 수정 할 수 없습니다.mutable 은 수정 할 수 있 습 니 다.container 가 constant iterator 만 있 으 면 이 container 의 mutable iterator 를 얻 을 수 없습니다.container 에 mutable iterator 가 있다 면 이 container 의 constant iterator 를 사용 할 수 있 습 니 다.
std::vector<int> nums(10);
std::vector<int>::iterator it = nums.begin();
// following are all valid
nums[2] = 2;		// specialized to vector/array
it[5] = 5;			// works for all random access iterator
*(it + 7) = 7;		// works for all random access iterator

std::vector<int>::const_iterator p = nums.begin();	// constant iterator

std::vector<int>::reverse_iterator rp;		// reverse iterator
for(rp = nums.rbegin(); rp != nums.rend(); rp++)
	cout << *rp << " ";

container 를 거꾸로 옮 겨 다 니 려 면 reverse iterator 를 사용 하 십시오. reverse 에 주의 하 십시오.iterator 형식 으로 + 는 뒤에서 이동 합 니 다.
container adapter 는 다른 template class 를 바탕 으로 이 루어 진 template class 입 니 다.예 를 들 어 stack 은 기본적으로 deque 를 통 해 이 루어 지지 만 구체 적 인 실현 디 테 일 은 숨겨 져 있 습 니 다.
adapter template class 는 기본 적 인 container class 를 바탕 으로 하지만 이 기본 적 인 container class 는 다른 container 로 대체 하여 구체 적 인 응용 에 따라 더욱 높 은 효율 을 실현 할 수 있 습 니 다.예 를 들 어, vector 를 stack 의 기초 로 하려 면 다음 과 같이 설명 할 수 있 습 니 다.
stack<int, vector<int> > s;		// use vector as the underlying container for stack s

두 ">" 사이 에 빈 칸 이 있어 야 합 니 다.
associative container, 예 를 들 어 set 는 기본적으로 간단 한 데이터베이스 입 니 다.
set 기본 값 은 "<" 를 통 해 배열 되 어 있 습 니 다. 변경 하려 면 다음 과 같이 밝 혀 야 합 니 다.
set<T, ordering> s;

그 중에서 ordering 은 두 개의 인자 가 있어 야 하고 반환 값 은 bool 형의 well - behaved relation 이 어야 합 니 다. strict weak ordering 이 어야 합 니 다.
맵 을 사용 할 때 새로운 입구 가 잘못 생기 지 않도록 주의해 야 한다
map<int, int> hash;
val = hash[key];	// if there is no key in hash, it will be created

좋은 웹페이지 즐겨찾기