320x100
splice는 한 list에서 다른 list로 원소들을 옮기는 함수.
원소들은 복사(copy)나 이동(move)되지 않고 포인터 주소만 옮겨 담는다.
파라미터
pos | 삽입될 원소 위치 |
other | 콘텐츠를 전송할 다른 컨테이너 |
it | other에서 *this로 전송할 원소 |
first, last | other에서 *this로 전송할 원소의 범위 |
#include <iostream>
#include <list>
std::ostream& operator<<(std::ostream& ostr, const std::list<int>& list)
{
for (auto &i : list) {
ostr << " " << i;
}
return ostr;
}
int main ()
{
std::list<int> list1 = { 1, 2, 3, 4, 5 };
std::list<int> list2 = { 10, 20, 30, 40, 50 };
auto it = list1.begin();
std::advance(it, 2);
list1.splice(it, list2);
std::cout << "list1: " << list1 << "\n";
std::cout << "list2: " << list2 << "\n";
list2.splice(list2.begin(), list1, it, list1.end());
std::cout << "list1: " << list1 << "\n";
std::cout << "list2: " << list2 << "\n";
}
list1: 1 2 10 20 30 40 50 3 4 5
list2:
list1: 1 2 10 20 30 40 50
list2: 3 4 5
https://en.cppreference.com/w/cpp/container/list/splice
320x100
'프로그래밍 > Morden C++' 카테고리의 다른 글
std::clamp (0) | 2021.09.29 |
---|---|
std::accumulate (0) | 2021.09.22 |
[C++17] std::optional (0) | 2021.07.17 |
std::advance (0) | 2021.07.13 |
자주 쓰이는 vector 사용 패턴 (0) | 2021.07.11 |