programing/C++

[C++] 배열복사 std::copy()

쪽제비 2017. 1. 19. 12:03

배열을 복사해야 하는 상황이 생겼다.

배열 길이가 무려 uint16_t 640*640 의 길이기에 반복문을 쓰기가 겁이 낫다.

처음에는 반복문을 썻는데 집에와서 생각해보니 memcpy와 같은 함수가 있을 것만 같았다.

memcpy는 byte 단위로 복사를 하는거라 다른 방법을 찾던중

std::copy() 함수를 발견했다.

 

매우매우 간단간단.

 

소스코드를 봅시다

#include <iostream> 
#include<algorithm>  
using namespace std;  
int main() 
{
	uint16_t src[16], dst[16];
    for (int i = 0; i < 16; i++) 	
    { 		
    	src[i] = i * i;
    }  	
    copy(src, src + 16, dst);  	
    for (int i = 0; i < 16; i++) 		
    	cout << i << " : " << dst[i] << endl;  	
        
    return 0; 
 }

 

우선 <algrithm> 을 추가 해주어야 합니다.

배열타입은 원하는 타입으로 하면 됩니다.

 

사용법은

 

copy(src  시작, src 마지막 +1, dst);

이렇게 하면 됩니다.

 

전체를 하려면

copy(src, src+길이, dst);

 

요래 해주면 됩니닷.

 

memcpy 로도 되는거 같긴한데 길이 계산을 해주는 것보다는

copy()를 쓰는게 좋을듯합니다.

 

길이가 짧은거는 반복문을 쓰는것도 나쁘지 않을듯.