Code Run
stl - copy 함수 이용하기 본문
1. 복사하기
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | /** copy use stlcopy */ #include <cstdio> #include <iostream> #include <vector> #include <algorithm> #include <string> using namespace std; int A[] = {3, 2, 5, 6, 1, 4}; int arr[6]; vector <int> vec1; template <typename T> void output(T A, string ment){ puts(ment.c_str()); for(int i=0;i<6;++i) printf("%d ", A[i]); puts(""); } void copyTest01(){ int B[6] = {0}; /// A배열의 내용을 B배열에 복사하기 : 덮어 씌워진다. copy(A, A+6, B); output(B, "B_array"); } void copyTest02(){ vector <int> vec2; /// 배열을 벡터에 복사하기 copy(A, A+6, back_inserter(vec1)); output(vec1, "vec1"); /// 벡터를 벡터에 뒤집어 복사하기 copy(vec1.rbegin(), vec1.rend(), back_inserter(vec2)); output(vec2, "vec2"); } void copyTest03(){ /// 벡터를 배열에 복사하기 copy(vec1.begin(), vec1.end(), arr); output(arr, "arr_array"); } int main(){ copyTest01(); copyTest02(); copyTest03(); return 0; } | cs |
2. 입출력하기
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 | /** Input & output use stl_copy() */ #include <cstdio> /// freopen #include <iostream> /// cin, cout #include <algorithm> /// copy #include <vector> /// vector #include <iterator> /// istream_iterator, ostream_iterator using namespace std; const int LM = (int)1e6; int N, A[LM + 1]; vector <int> vec; void IO_cStyle(){ int i; scanf("%d", &N); for(i=0;i<N;++i) scanf("%d", A+i); for(i=0;i<N;++i) printf("%d\n", A[i]); } void IO_use_cin_cout(){ ios_base::sync_with_stdio(false); cin>>N; int i, a; for(i=0;i<N;++i){ cin>>a; vec.push_back(a); } for(i=0;i<N;++i) cout<<vec[i]<<" "; } void IO_use_stlcopy(){ ios_base::sync_with_stdio(false); cin>>N; copy(istream_iterator<int>(cin),istream_iterator<int>(), back_inserter(vec)); /// istream_iterator<int>(cin) : 표준 스트림을 이용하여 정수를 받는다. /// istream_iterator<int>() : 파일의 끝까지 /// back_inserter(vec) : vec의 맨 뒤에 데이터를 추가한다. /// copy(istream_iterator<int>(cin),istream_iterator<int>(), vec.begin()); copy(vec.begin(), vec.end(), ostream_iterator<int>(cout, " ")); /// vec의 각 원소를 출력하고 공백을 출력한다. } int main(){ ///// Generate Data // freopen("in.txt", "w", stdout); // printf("%d\n", LM); // for(int i=0;i<LM;++i) printf("%d ", rand()); freopen("in.txt", "r", stdin); freopen("out.txt", "w", stdout); // IO_cStyle(); // IO_use_cin_cout(); IO_use_stlcopy(); return 0; } | cs |