Search
Duplicate

std::copy 2차원 배열 복사 / 백준 14502

간단소개
copy 어떻게 쓰는건데요?
팔만코딩경 컨트리뷰터
ContributorNotionAccount
주제 / 분류
C++
Algorithm
태그
Scrap
8 more properties

std::copy

SYNOPSIS
template <class InputIterator, class OutputIterator> OutputIterator copy (InputIterator first, InputIterator last, OutputIterator result);
C++
LIBRARY
#include <argorithm>
DESCRIPTION
Copy range of elements
Copies the elements in the range [first,last) into the range beginning at result.
The function returns an iterator to the end of the destination range (which points to the element following the last element copied).
정해진 크기의 요소들을 복사한다.
Parameters
배열을 복사한다.
first : 시작 주소
end : 끝 주소
result : 복사할 공간의 시작주소
example
copy(시작 지점, 끝나는 지점, 복사 될 시작지점)
array[10]을 array_copy[10]에 복사하고자한다면
copy(array, array+10, array_copy);
C++
2차원 배열의 경우
array[10][10]을 array_copy[10][10]에 복사한다고 할 때
copy(&array[0][0], &array[0][0]+100, &array_copy[0][0]);
C++
이렇게 주어야 함.
+벡터의 경우
copy(v.begin(), v.end(), v_copy.begin());
C++
아무튼 이 코드를 이용한 문제는 백준 14502 연구소 문제이다.
2차원 배열을 계속 복사해가면서 bfs돌리는 문제이다.
배열을 함수로 전달할 때, 주소만 전달가능하기에 배열을 복사하는 방법을 찾았다.
사용한 코드
int **map; map = new int *[10]; for(int i=0; i<10; i++) map[i] = new int[10];
C++
int **cp; cp = new int *[10]; for(int o=0; o<10; o++) cp[o] = new int[10]; copy(&map[0][0],&map[0][0]+100,&cp[0][0]); temp = bfs(cp);
C++