
C++ vector 범위 초기화 Copy
Notepad96
·2020. 11. 14. 13:51

1. copy
copy 함수는 algorithm 라이브러리의 포함되어 있는 함수이다.
copy는 반복자를 인자로 받으며 지정된 범위의 값을 복사할 수 있다.
예를 들어 vector에서 인덱스 2번 부터 6번까지의 값들을 다른 벡터의 존재하는 일련의 값들로 초기화 하고 싶을 경우에도 이 copy 함수를 사용할 수 있다.
물론 이러한 작업은 for문을 사용하여도 충분히 가능하다.
2. 코 드
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
vector<int> v = { 10, 20, 30, 40, 50 };
for (int i : v) cout << i << " ";
cout << "\n=============================\n";
// vector<int> v2; // error 발생
vector<int> v2(10,0);
copy(v.begin(), v.end(), v2.begin()+5);
//copy_n(v.begin(), 5, v2.begin() + 5);
copy_if(v.begin(), v.end(), v2.begin(), [](int i) {return i > 30; });
// v2.assign(v.begin(),v.end()); // 10 20 30 40 50 새로 초기화
for (int i : v2) cout << i << " ";
cout << "\n=============================\n";
v2.insert(v2.end(), v.begin(), v.end());
for (int i : v2) cout << i << " ";
cout << "\n=============================\n";
return 0;
}

- copy의 경우 삽입이 아니라 값을 다시 초기화하는 것이므로
vector v2; 처럼 공간을 할당하지 않고서 copy를 사용하면 에러가 발생한다.
- copy ( 시작 반복자, 종료 반복자, 초기화 시작할 반복자) 를 인자로 가지며
시작 반복자 ~ 종료 반복자 사이의 개수만큼 시작할 반복자에서 시작하여 값들이 초기화된다.
3. 참 조
copy - C++ Reference
123456789 template OutputIterator copy (InputIterator first, InputIterator last, OutputIterator result) { while (first!=last) { *result = *first; ++result; ++first; } return result; }
www.cplusplus.com
copy_if - C++ Reference
function template std::copy_if template OutputIterator copy_if (InputIterator first, InputIterator last, OutputIterator result, UnaryPredicate pred); Copy certain elements of range Copies the elements in the range [first,last) for which pred re
www.cplusplus.com
'C++ > STL' 카테고리의 다른 글
C++ 문자열 소문자, 대문자 변환 transform (0) | 2020.11.15 |
---|---|
C++ 값 교환하기 Swap (0) | 2020.11.14 |
C++ 동일 원소 포함 여부 확인 is_permutation (0) | 2020.11.14 |
C++ 일련하는 원소 찾기 Search (0) | 2020.11.13 |
C++ 원소 개수 구하기 Count (0) | 2020.11.13 |