메서드 이름에서 알 수 있듯이 copy() 메서드는 C++ STL에서 사용할 수 있는 다양한 메서드를 통해 데이터를 복사하는 데 사용됩니다. 모든 방법은 기능과 매개변수가 다릅니다. 이러한 메소드는
복사(start_i1, end_i1, start_i2)
이 메서드는 반복기의 시작 및 끝 요소가 모두 포함된 지정된 범위 내에서 한 반복기에서 다른 반복기로 데이터를 복사하는 데 사용됩니다. 세 가지 유형의 인수, 즉 -
가 필요합니다.-
Start_i1 − iterator의 초기 요소를 가리킬 것입니다. 예를 들어, 요소가 다른 iterator로 복사될 위치에서 i_1, i_2라고 가정해 봅시다.
-
End_i1 - iterator의 끝 요소를 가리킬 것입니다. i_1이라고 하면 요소가 다른 iterator에 복사될 때까지 i_2라고 가정해 보겠습니다.
-
Start_i2 − 요소가 복사될 반복자의 초기 위치, 즉 i_2를 가리킵니다.
반환 가치 − 대상 반복자의 끝을 가리키는 반복자를 반환합니다. 즉, 요소가 복사되는 위치까지 i_2입니다.
예시
#include<iostream> #include<algorithm> #include<vector> using namespace std; int main(){ //creating vector v1 vector<int> vec_1 = { 10, 20, 30, 40, 50 }; //declaring empty vector of size vector<int> vec_2(6); // using copy() function to copy in vector 2 copy(vec_1.begin(), vec_1.begin()+4, vec_2.begin()); //print new vector cout<<"Elements in vector v2 copied from v1: "; for(int i=0; i<4; i++){ cout<<vec_2[i] << " "; } }
출력
이 코드의 출력은 -
입니다.Elements in vector v2 copied from v1: 10 20 30 40
copy_n(start_i1, 총계, start_i2)
이 방법은 또한 한 반복기에서 다른 반복기로 데이터를 복사하는 데 사용되지만 주어진 위치에서 시작하여 총 몇 개의 요소를 복사해야 하는지 컴파일러에 알려줍니다. 세 가지 유형의 인수가 필요합니다. -
-
Start_i1 − iterator의 초기 요소를 가리킬 것입니다. 예를 들어, 요소가 다른 iterator로 복사될 위치에서 i_1, i_2라고 가정해 봅시다.
-
총계 − start_i1에서 지정한 위치부터 몇 개의 요소를 복사할지 설명합니다. 양의 정수와 음의 정수를 모두 사용할 수 있지만 음수이면 연산을 수행하지 않습니다.
-
Start_i2 − 요소가 복사될 반복자의 초기 위치, 즉 i_2를 가리킵니다.
반환 가치 − 대상 반복자의 끝을 가리키는 반복자를 반환합니다. 즉, 요소가 복사되는 위치까지 i_2입니다.
예시
#include<iostream> #include<algorithm> #include<vector> using namespace std; int main(){ //creating vector v1 vector<int> vec_1 = { 10, 20, 30, 40, 50 }; //declaring empty vector of size vector<int> vec_2(6); // using copy_n() function to copy in vector 2 copy_n(vec_1.begin(), 4, vec_2.begin()); //print new vector cout<<"Elements in vector v2 copied from v1: "; for(int i=0; i<4; i++){ cout<<vec_2[i] << " "; } }
출력
이 코드의 출력은 -
입니다.Elements in vector v2 copied from v1: 10 20 30 40
copy_if(start_i1, end_i1, start_i2, 부울 함수)
이 메서드는 이 함수에 전달된 네 번째 인수에 정의될 범위에 적용되는 조건에 따라 지정된 범위 내에서 한 반복기에서 다른 반복기로 데이터를 복사하는 데 사용됩니다. 네 가지 유형의 인수가 필요합니다. -
-
Start_i1 − iterator의 초기 요소를 가리킬 것입니다. 예를 들어, 요소가 다른 iterator로 복사될 위치에서 i_1, i_2라고 가정해 봅시다.
-
End_i1 - iterator의 끝 요소를 가리킬 것입니다. i_1이라고 하면 요소가 다른 iterator에 복사될 때까지 i_2라고 가정해 보겠습니다.
-
Start_i2 &minbus; 요소가 복사될 반복기의 초기 위치, 즉 i_2를 가리킵니다.
-
부울 함수 − 이 함수에서는 범위에 부과하려는 조건을 전달합니다. 이 함수의 반환 유형은 Boolean이므로 true/false를 반환하고 반환 값에 따라 범위 요소가 표시됩니다.
반환 가치 − 대상 반복자의 끝을 가리키는 반복자를 반환합니다. 즉, 요소가 복사되는 위치까지 i_2입니다.
예시
#include<iostream> #include<algorithm> #include<vector> using namespace std; int main(){ //creating vector v1 vector<int> vec_1 = { 10, 21, 30, 40, 57 }; //declaring empty vector of size vector<int> vec_2(6); // using copy_if() function to copy in vector 2 copy_if(vec_1.begin(), vec_1.end(), vec_2.begin(), [](int i){return i%2==0;}); //print new vector cout<<"Elements in vector v2 copied from v1: "; for(int i=0; i<4; i++){ cout<<vec_2[i] << " "; } }
출력
이 코드의 출력은 -
입니다.Elements in vector v2 copied from v1: 10 30 40 0
copy_backwards(start_i1, end_i1, end_i2)
이 메서드는 데이터를 지정된 범위 내에서 지정된 범위 내의 다른 반복기로 역방향으로 복사하는 데 사용됩니다. 즉, 크기에 따라 반복기가 끝으로 이동되고 해당 위치에서 요소가 붙여넣어집니다. 세 가지 유형의 인수가 필요합니다. -
-
Start_i1 − iterator의 초기 요소를 가리킬 것입니다. 예를 들어, 요소가 다른 iterator로 복사될 위치에서 i_1, i_2라고 가정해 봅시다.
-
End_i1 - iterator의 끝 요소를 가리킬 것입니다. i_1이라고 하면 요소가 다른 iterator에 복사될 때까지 i_2라고 가정해 보겠습니다.
-
end_i2 − 요소가 복사될 반복자의 끝 위치, 즉 i_2를 가리킵니다.
반환 가치 − 대상 반복자의 시작 요소, 즉 요소가 복사되는 위치까지 i_2를 가리키는 반복자를 반환합니다.
예시
#include<iostream> #include<algorithm> #include<vector> using namespace std; int main(){ //creating vector v1 vector<int> vec_1 = { 10, 21, 30, 40, 57,67 }; //declaring empty vector of size vector<int> vec_2(6); // using copy_backward() function to copy in vector 2 copy_backward(vec_1.begin(), vec_1.end()+4, vec_2.begin()+5); //print new vector cout<<"Elements in vector v2 copied from v1: "; for(int i=0; i<vec_2.size(); i++){ cout<<vec_2[i] << " "; } }
출력
이 코드의 출력은 -
Elements in vector v2 copied from v1: 0 10 21 30 40 0