💎/C++

[C++] 배열복사 memcpy, copy

dar0m! 2020. 3. 23. 04:42

memcpy

#include <string.h>  // C++ 에서는 <cstring>

void* memcpy(void* destination, const void* source, size_t num);

예제

memcpy(arr, tarr, sizeof(arr));

 

copy

#include <algorithm>

copy(initArray, initArray + n, v.begin()); // initArray내용을 n만큼 v에 복사

copy(v.begin(), v.end(), v2.begin()); // v의 내용을 v2에 복사

 

상세

template<class InputIterator, class OutputIterator>
  OutputIterator copy (InputIterator first, InputIterator last, OutputIterator result)
{
  while (first!=last) {
    *result = *first;
    ++result; ++first;
  }
  return result;
}

예제

#include <iostream>
#include <algorithm>    // copy
#include <vector>       // vector
using namespace std;
int n = 7;
int main() {
	vector<int> v(n);
	int initArray[] = { 10,20,30,40,50,60,70 };

	copy(initArray, initArray + n, v.begin());

	cout << "v contains:";
	for (vector<int>::iterator it = v.begin(); it != v.end(); ++it)
		printf("%d ", *it);
	
	// vector<int> v2; 크기가 없어서 복사 실패
	vector<int> v2;
	v2.resize(n);
	copy(v.begin(), v.end(), v2.begin());

	vector<int>::iterator iter = v2.begin();
	printf("\n%d", iter[3]);

	return 0;
}

실행결과