jin.log
로그인
jin.log
로그인
STL(Vector)
jinsuk
·
2023년 10월 30일
팔로우
0
cpp
0
벡터는 우리가 데이터를 이리저리 밀어넣고 사용하면서 실질적으로 여유분까지 꽉찼으면 메모리를 증설한다.
메모리를 증설한뒤 기존에 있던 영역을 버리고 더 큰 영역을 만들어준다.
캐피시티를 여유있게 1.5배에서 2배정도 늘려준다.
내부적으로 포인터 자체를 들고 있다. iterator
벡터의 중간 삽입 삭제는 굉장히 비효율적으로 동작한다.
벡터는 임의 접근 연산자를 지원한다.
내가 원하는 데이터를 처음부터 숫자로 세는게 아닌 n번째 데이터가 어디에 있는지 한 번에 순간이동해서 바로 사용할 수 있다.
나중에 리스트나 다른 컨테이너들은 이런 임의접근이 되지 않는다.
이런식으로 erase를 해준다면 iterator자체가 삭제가 되어서 해당 컨테이너 소속이 아닌게 되기 때문에 크래쉬가 난다. -> 해결하기 위해서는 break문을 넣어주거나 아니면 erase하는 그 위치를 다시 뱉어주기 때문에 그 위치를 다시 받아서 활용해야한다.
결론 이터레이터로 포문을 활용해 쫙 스캔을 하며 데이터를 조작한다면 조심해야한다.
벡터 구현
jinsuk
공부기록용
팔로우
이전 포스트
spinLock, context switching, AutoResetEvent
다음 포스트
List
0개의 댓글
댓글 작성