프로그래밍/c++
vector #2
오늘의논리
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