● Vector , List
- 공통사항
begin() : 맨처음 원소를 가르키는 반복자
end : 맨마지막 원소의 다음위치 반복자
empty : 원소가 비었느냐?
size : 원소의 갯수 (Vec[5]같은 놈을 Vec.Size와 같이 사용 가능)
erase : 원소 제거 (반복자를 넣으면 그 해당 반복자를 제거)
● Vector 만의 특징
[] , at :임의 위치 지정
Push_back : 맨뒤 삽입 (이거밖에 없는 이유는 중간삽입은 부하가 심해서 뺀거임 반복자의 Insert를 쓰면 된다고도함)
pop_back
resize : 공간과 원소를 확보(원소, 크기)
reserve : 공간만 확보( 크기)
※ resize reserve 모두 공간의 1.5배 확보한다. 10입력 11원소 15공간
Ex) Vector는 1.5배씩 늘어난다.
0 0
1 1
2 2
3 3
4 4
5 6
6 6
7 9
● List 만의 특징
push_front
pop_front
back : 맨뒤 원소
front
reverse : 앞뒤를 바꿈
Sort : 리스트 자료구조의 자료 단위는 노드라 뒤집어 봤자 제대로 적용이 안됨 그래서 전용 소트 함수가 따로 있는것
구조상 일반 소트 알고리즘을 쓸수가 없어서 따로 지원
● 반복자 무효화 : 포인트는 아니지만 포인트역활을 해왔던 반복자가 그 역활을 못하는 상황
( 추가, 삭제에서 모두 발생하지만 평균적으로 삭제에서 더 많이 발생)
보통 원소의 처음부터 끝까지 한번에 지울때 많이 발생
Iter=vec.begin()
for(iter!=vec.end();iter++)
{
delete * iter;
iter = vec.erase(iter) // 이부분 중요 이놈이 반복자를 지우고 다음놈을 리턴해주기 때문에 다음에 계속 이어할수 있음
}
● 벡터 좀 쉽게 쓰는법
std::vector < 자료형 변수명 >
:: iterator
이렇게 쓰면 졸 귀찮으니까
typedef score_list std::vector<tagscore>
요래 해두면 다음부턴 score_list만쓰면 만사오케이 ㅇㅇㅇㅇㅇㅇ
'스터디 > 활동' 카테고리의 다른 글
인벤토리 알고리즘 프로세싱 (0) | 2013.06.25 |
---|---|
STL 기초 3일 (0) | 2013.06.20 |
STL 기초 1일차 (0) | 2013.06.18 |
디자인 패턴 종류 (0) | 2013.06.07 |
3. 클래스 생성자와 파괴자 (0) | 2013.03.19 |