프로그래밍/Morden C++

std::splice

MAKGA 2021. 7. 13. 20:56
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

 

std::list<t,allocator>::splice - cppreference.com</t,allocator>

void splice( const_iterator pos, list& other ); (1) void splice( const_iterator pos, list&& other ); (1) (since C++11) void splice( const_iterator pos, list& other, const_iterator it ); (2) void splice( const_iterator pos, list&& other, const_iterator it )

en.cppreference.com

 

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