STL(Vector)

jinsuk·2023년 10월 30일
0

  • 벡터는 우리가 데이터를 이리저리 밀어넣고 사용하면서 실질적으로 여유분까지 꽉찼으면 메모리를 증설한다.
  • 메모리를 증설한뒤 기존에 있던 영역을 버리고 더 큰 영역을 만들어준다.


  • 캐피시티를 여유있게 1.5배에서 2배정도 늘려준다.

  • 내부적으로 포인터 자체를 들고 있다. iterator



  • 벡터의 중간 삽입 삭제는 굉장히 비효율적으로 동작한다.
  • 벡터는 임의 접근 연산자를 지원한다.
  • 내가 원하는 데이터를 처음부터 숫자로 세는게 아닌 n번째 데이터가 어디에 있는지 한 번에 순간이동해서 바로 사용할 수 있다.
  • 나중에 리스트나 다른 컨테이너들은 이런 임의접근이 되지 않는다.

  • 이런식으로 erase를 해준다면 iterator자체가 삭제가 되어서 해당 컨테이너 소속이 아닌게 되기 때문에 크래쉬가 난다. -> 해결하기 위해서는 break문을 넣어주거나 아니면 erase하는 그 위치를 다시 뱉어주기 때문에 그 위치를 다시 받아서 활용해야한다.
  • 결론 이터레이터로 포문을 활용해 쫙 스캔을 하며 데이터를 조작한다면 조심해야한다.

벡터 구현

profile
공부기록용

0개의 댓글