(C++) List

Posted by : at

Category : Cpp


list<int> li;

for(int i = 0; i < 1000; i++)
    li.push_back(i);

int size = li.size();
// int capacity = li.capacity(); // 없음

int first = li.front();
int last = li.back();

// li[3] = 10;  // 임의접근 불가

list<int>::iterator itBegin = li.begin();
list<int>::iterator itEnd = li.end();

for(list<int>::iterator it = li.begin(); it != li.end(); ++it)
{
    cout << *it << endl;
}

li.insert(itBegin, 100);
li.erase(li.begin());
li.pop_front();
li.remove(10);  // 지원함, vector보다 손쉽게 중간요소를 제거할 수 있음.

그런데 임의접근이 안되는데, 중간 삽입/삭제는 빠르다고??
중간에 접근하는게 임의 접근아닌가? 어떻게 빠를수 있지??

list<int>::iterator it = li.begin();
for(int i = 0; i < 50; i++)
    ++it;

li.erase(it);

좀 말장난인게, 삽입/삭제가 빠르단 말이지 찾는게 빠르단 말이아님,
iterator로 요소를 갖고있는 경우 삽입/삭제가 빠르단 말이다.


About Taehyung Kim

안녕하세요? 8년차 현업 C++ 개발자 김태형이라고 합니다. 😁 C/C++을 사랑하며 다양한 사람과의 협업을 즐깁니다. ☕ 꾸준한 자기개발을 미덕이라 생각하며 노력중이며, 제가 얻은 지식을 홈페이지에 정리 중입니다. 좀 더 상세한 제 이력서 혹은 Private 프로젝트 접근 권한을 원하신다면 메일주세요. 😎

Star
Useful Links