더북(TheBook)

2.5.2 원소 추가하기

push_front() 멤버를 호출해서 리스트의 시작에 원소를 추가할 수 있다. push_back()을 호출해서 리스트의 끝에 원소를 추가할 수 있다. 둘 다 인수는 추가할 객체가 된다.

std::list<std::string> names {“Jane”, “Jim”, “Jules”, “Janet”};
names.push_front(“Ian”);          // 리스트의 앞에 string(“Ian”)을 추가
names.push_back(“Kitty”);         // 리스트의 끝에 string(“Kitty”)를 추가

두 함수 모두 새 원소를 복제하는 대신 인수를 이동하는 우측값 참조 매개변수 버전이 있다. 우측값 참조 매개변수가 좌측값 참조 매개변수 버전보다 더 효율적이다. 하지만 emplace_front()emplace_back() 멤버가 더 효율적으로 동작한다.

names.emplace_front(“Ian”);          // 리스트의 앞에 string(“Ian”)을 추가
names.emplace_back(“Kitty”);         // 리스트의 끝에 string(“Kitty”)를 추가

두 함수에 사용한 인수는 리스트 내부에서 원소를 생성할 때 호출될 생성자의 인수다. 이들 함수를 이용하면 push_front()push_back()의 우측값 버전이 실행하는 이동 연산을 할 필요가 없다.

insert() 함수 멤버를 사용해 리스트 내부에 원소를 추가할 수 있다. insert() 함수는 다른 순차열 컨테이너와 마찬가지로 세 가지 버전이 있다. 첫 번째 버전은 반복자로 지정한 위치에 새 원소를 삽입한다.

std::list<int> data(10, 55);            // 리스트의 원소 10개를 값 55로 생성
data.insert(++begin(data), 66);         // 두 번째 원소로 66을 삽입
 

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.