Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++ STL의 splice() 함수 나열

<시간/>

이 기사에서는 C++ STL에서 list::splice() 함수의 작동, 구문 및 예제에 대해 논의할 것입니다.

STL의 목록이란 무엇입니까?

목록은 순서의 어느 곳에서나 일정한 시간 삽입 및 삭제를 허용하는 데이터 구조입니다. 목록은 이중 연결 목록으로 구현됩니다. 목록은 비연속적인 메모리 할당을 허용합니다. 목록은 배열, 벡터 및 데크보다 컨테이너의 모든 위치에서 요소의 삽입 추출 및 이동을 더 잘 수행합니다. 목록에서 요소에 대한 직접 액세스는 느리고 목록은 forward_list와 비슷하지만 순방향 목록 개체는 단일 연결 목록이며 앞으로만 반복될 수 있습니다.

목록::splice()는 무엇입니까?

list::splice()는 헤더 파일에 선언된 C++ STL의 내장 함수입니다. splice()는 특정 위치에 있는 한 목록 컨테이너에서 다른 목록 컨테이너로 요소를 전송하는 데 사용됩니다. 이 함수는 목록에 내용을 삽입하고 다른 목록에서 해당 내용을 제거하여 두 목록의 크기를 수정합니다.

구문

This function’s syntax can be defined as 3 ways:
list1.splice(position, list2);
list1.splice(position, list2, i);
list1.splice(position, list2, first, last);

매개변수

  • 위치 − 요소를 전송하려는 목록의 위치입니다.

  • 목록2 − 요소를 전송하려는 목록입니다.

  • i:전송하고자 하는 요소에서 list2의 끝까지 list2의 위치를 ​​지정하는 iterator입니다.

  • 처음, 마지막 − 둘 다 요소를 전송하려는 list2의 시작 위치와 끝 위치를 정의하는 반복자입니다.

예시

Input: list<int> List_container= { 10, 11, 13, 15};
      list<int> List2 = {1, 2, 3, 4};
      List_container.splice(2, List2);
Output:
      List_container= 10 11 13 15 3 4
      List2 = 1 2

반환 값

이 함수는 목록의 마지막 요소를 가리키는 역방향 반복기를 반환합니다. 역방향 반복자는 역방향으로 이동하는 반복자입니다.

#include <bits/stdc++.h>
using namespace std;
int main(){
   list<int> myList_1 = { 10, 20, 30, 40 };
   list<int> myList_2 = { 50, 60 };
   list<int>::iterator i;
   i = myList_2.begin();
   myList_1.splice(myList_1.end(), myList_2, i);
      cout<<"list after splice operation" << endl;
   for (auto temp : myList_1)
      cout << temp << " ";
   return 0;
}

출력

위의 코드를 실행하면 다음 출력이 생성됩니다 -

list after splice operation
10 20 30 40 50

예시

#include <bits/stdc++.h>
using namespace std;
int main(){
   list<int> myList_1 = { 10, 20};
   list<int> myList_2 = { 30, 40, 50};
   list<int> myList_3 = {60};
   myList_1.splice(myList_1.begin(), myList_2);
      cout << "list 1 after splice operation" << endl;
   for (auto x : myList_1)
      cout << x << " ";
   myList_3.splice(myList_3.end(), myList_1);
      cout << "\nlist 3 after splice operation" << endl;
   for (auto x : myList_3)
      cout << x << " ";
   return 0;
}

출력

위의 코드를 실행하면 다음 출력이 생성됩니다 -

list 1 after splice operation
30 40 50 10 20
list 1 after splice operation
60 30 40 50 10 20