배열을 복사해야 하는 상황이 생겼다.
배열 길이가 무려 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()를 쓰는게 좋을듯합니다.
길이가 짧은거는 반복문을 쓰는것도 나쁘지 않을듯.
'programing > C++' 카테고리의 다른 글
[Error] C2679 이항 '<<': 오른쪽 피연산자로 'std::string' 형식을 사용하는 연산자가 없거나 허용되는 변환이 없습니다. (1) | 2018.06.28 |
---|---|
[C++] 시간 측정 - clock() (0) | 2017.06.12 |
[C++] DLL 만들기/사용하기 (1) | 2016.12.28 |
[STL] vector 복사 (0) | 2016.10.31 |