2017-12-29 32 views
0

내가 C++을 배우고 종료하고 I 변환 할 경우 하나 개의 시나리오와 함께 붙어 사용하여 설정하고 난 모든 고유을 얻으려면 배열의 요소들을 집합으로. STL 사용 방법. 아래는 제 코드입니다. 또한 좋은 설명을 원합니다.C++ 포인터 배열은 배열</p> <p>내가 배열의 주소를 보유하고 포인터를 설정하는 STL이 시작

#include<set> 

void possiblepermutation(int *array) { 
    set<int> roots(begin(array),end(array)); 

} 

코멘트 아래 읽은 후, 나는 포인터를 전달하고 정도로 시작과 종료에 대해 아무 생각이 없다()과 end()를 시작 것을 이해했다. 배열 포인터와 함께 배열의 크기를 전달하면 어떻게 할 수 있습니까?

void possiblepermutation(int *array , int n) { 
     set<int> roots(begin(array),end(array)); // HOW TO THEN 

    } 
+3

은 "나는을 :

그것은 아마도 참조, 함수에 std::vector 같은 C++ 표준 라이브러리 컨테이너에 합격하거나, 매개 변수로 배열의 길이를 통과하거나 당신의 일이다 C++ 학습 = "그래서 C에 태그하지 마라! – Stargateur

+0

배열을 함수에 전달할 때 크기 정보가 손실되기 때문에 배열의 크기가 필요합니다. – Rakete1111

+2

귀하의 질문이 명확하지 않습니다. 그러나'array'는 포인터가 아니라 배열입니다. – juanchopanza

답변

2

std::beginstd::end 포인터 유형 소멸했다 배열의 범위를 반환하지 않는다. 그들이 보는 것은 포인터뿐입니다. 비공식적으로, 그들은 포인터가 실제로 배열의 첫 번째 요소를 가리키는 지 모릅니다. 예를

void possiblepermutation(int* array , std::size_t n){ 
    std::set<int> roots(array, array + n); 
+0

이 함수는 배열이 쇠약 해지면 관계가 없습니다. 알고있는 것은 매개 변수가 포인터라는 것입니다. – juanchopanza

+0

@ juanchopanza : 실제로, 내가 말하고자하는 바입니다. – Bathsheba

+0

업데이트 된 질문 @Bathsheba – Sumeet