오늘의논리 2023. 3. 4. 19:17
728x90
 
  • vector(동적 배열)

 

  • vector 동작원리 (size / capacity)
  • 중간 삽입/삭제 ( Bad )
  • 처음/ 삽입/삭제 (Bad/Good)
  • 임의 접근 (Random Access)

 

 

vector = 동적배열 = 동적으로 커지는 배열 = 배열

원소가 하나의 메모리 블록에 연속하게 저장된다!

vector는 중간에 삽입/삭제하는 행위는 비효율적임

vector처음 데이터 삽입/삭제는 비효율적이나 끝 데이터 삽입/삭제는 효율적

 

v.insert(v.begin() + 2, 5); // 시작으로부터 2 5라는 데이터 삽입

v.erase(v.begin() + 2); // 시작으로부터 2 데이터 삭제

v.erase(v.begin() + 2, v.begin() +4); // 시작으로부터 2 ~4칸후  삭제

 

쭉 스캔을 하면서, 3이라는 데이터가 있으면 일괄 삭제 하고 싶다. 라고하면

for (vector<int>::iterator it = v.begin(); it!=v.end(); )
{
    int data = *it;
    if (data == 3)
    {
    	it = v.erase(it);
    }
    else
    {
   	 ++it;
    }

}

 

초기화 하거나 지우는 문법을 할땐 주의를 해야한다!

728x90