std :: transform의 마지막 인수

자비스

cplusplus.com 에 따르면 , std::transform 하나 (1) 또는 두 (2) 범위의 요소에 순차적으로 연산을 적용하고 결과에서 시작하는 범위에 결과를 저장합니다. 의 마지막 인수 std::transform는 일반적으로 첫 번째 컨테이너의 요소에 대해 몇 가지 작업을 수행하는 함수이지만 다음과 같은 functor 개체가 있다고 가정합니다.

struct functor {
  functor(int x) : x(x) {}
  int operator()(int x1) {return x + x1;}

  private :
    int x;
}

그런 다음 함수 대신 다음과 같이 functor의 인스턴스를 전달할 수도 있습니다.

vector<int> v1, v2;
v1.push_back(1);
v1.push_back(2);
v2.resize(v1.size());
std::transform(v1.begin(), v1.end(), v2.begin(), functor(1));

내 질문은 컴파일러가 함수 또는 함수 클래스의 인스턴스가 함수에 전달되었는지 어떻게 알 수 std::transform있습니까? 또한 인스턴스가 전달되면 첫 번째 컨테이너의 요소에 함수를 적용하는 것과 관련하여 내부적으로 어떤 일이 발생합니까?

w1ck3dg0ph3r

std::transform 하나의 범위에 대해 구현이 가능한 템플릿 (하나 또는 두 개의 입력 범위에 대해 두 개의 오버로드) 함수입니다.

template<class InputIt, class OutputIt, class UnaryOperation>
OutputIt transform(InputIt first1, InputIt last1, OutputIt d_first, 
                   UnaryOperation unary_op)
{
    while (first1 != last1) {
        *d_first++ = unary_op(*first1++);
    }
    return d_first;
}

그리고 두 범위

template<class InputIt1, class InputIt2, 
         class OutputIt, class BinaryOperation>
OutputIt transform(InputIt1 first1, InputIt1 last1, InputIt2 first2, 
                   OutputIt d_first, BinaryOperation binary_op)
{
    while (first1 != last1) {
        *d_first++ = binary_op(*first1++, *first2++);
    }
    return d_first;
}

마지막 인수에 대한 요구 사항은 operator ()제공된 반복자를 역 참조하여 얻은 형식에 적용 할 수 있어야한다는 것입니다 (즉, 인수와 반환 형식은 암시 적으로 변환 가능합니다). 따라서 일반 함수, 람다 또는 이러한 연산자가있는 모든 사용자 유형이 될 수 있습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

bash 'vi 모드에서 마지막 명령의 마지막 인수 복구

분류에서Dev

각 행의 마지막 요소 인쇄

분류에서Dev

라인, $ 6의 마지막 값 = 0?

분류에서Dev

라인, $ 6의 마지막 값 = 0?

분류에서Dev

Bash, 현재 명령의 마지막 사용 인수 삽입

분류에서Dev

`find ... -exec $ COMMAND {} +`의 마지막 호출에 인수 추가

분류에서Dev

VBO를 사용할 때 glVertexAttribPointer의 마지막 두 인수

분류에서Dev

Java 순열의 첫 번째 및 마지막 정수 인쇄

분류에서Dev

마지막 변수의 이해

분류에서Dev

수식 쿼리의 마지막 부분

분류에서Dev

쉘 스크립트 (bash)의 인수 목록에서 마지막 인수 제거

분류에서Dev

vi 모드의 bash에서 마지막 명령의 마지막 매개 변수

분류에서Dev

자바 : 홀수인지 짝수인지에 따라 데크의 첫 번째 또는 마지막 정수 배치

분류에서Dev

마스크가있는 십진수의 마지막 두 자리?

분류에서Dev

r : as.character의 마지막 숫자가 홀수인지 짝수인지에 따라 ifelse ()

분류에서Dev

마지막 명령의 인수를 사용하여 명령 실행

분류에서Dev

논리의 마지막 글자를 어떻게 인쇄 할 수 있습니까?

분류에서Dev

연결 목록의 마지막 노드를 인쇄 할 수 없습니다.

분류에서Dev

MVC 컨트롤러에 대한 마지막 인수로서의 파일 이름

분류에서Dev

PHP는 변수의 마지막 두 문자를 확인합니다.

분류에서Dev

마지막 명령의 인수를 사용하여 명령 실행

분류에서Dev

파이썬 : 변수의 마지막 세 숫자가 000인지 아닌지 어떻게 확인합니까?

분류에서Dev

패턴으로 파일의 마지막 부분 제거-체인에서 마지막 인증서 제거

분류에서Dev

awk의 마지막 줄을 두 번 인쇄하지 마십시오.

분류에서Dev

xargs로 마지막 인수 수정

분류에서Dev

이것이 FileSystemWatcher onChanged 이벤트의 마지막 변경인지 어떻게 확인할 수 있습니까?

분류에서Dev

피보나치 수열의 부분합의 마지막 숫자

분류에서Dev

변수의 마지막 세 문자가 다른 변수와 일치하는지 어떻게 확인합니까?

분류에서Dev

css 마지막 요소가 4의 배수 인 경우 마지막 4 개를 선택하고, 3의 배수 인 경우 마지막 3 개를 선택합니다.

Related 관련 기사

  1. 1

    bash 'vi 모드에서 마지막 명령의 마지막 인수 복구

  2. 2

    각 행의 마지막 요소 인쇄

  3. 3

    라인, $ 6의 마지막 값 = 0?

  4. 4

    라인, $ 6의 마지막 값 = 0?

  5. 5

    Bash, 현재 명령의 마지막 사용 인수 삽입

  6. 6

    `find ... -exec $ COMMAND {} +`의 마지막 호출에 인수 추가

  7. 7

    VBO를 사용할 때 glVertexAttribPointer의 마지막 두 인수

  8. 8

    Java 순열의 첫 번째 및 마지막 정수 인쇄

  9. 9

    마지막 변수의 이해

  10. 10

    수식 쿼리의 마지막 부분

  11. 11

    쉘 스크립트 (bash)의 인수 목록에서 마지막 인수 제거

  12. 12

    vi 모드의 bash에서 마지막 명령의 마지막 매개 변수

  13. 13

    자바 : 홀수인지 짝수인지에 따라 데크의 첫 번째 또는 마지막 정수 배치

  14. 14

    마스크가있는 십진수의 마지막 두 자리?

  15. 15

    r : as.character의 마지막 숫자가 홀수인지 짝수인지에 따라 ifelse ()

  16. 16

    마지막 명령의 인수를 사용하여 명령 실행

  17. 17

    논리의 마지막 글자를 어떻게 인쇄 할 수 있습니까?

  18. 18

    연결 목록의 마지막 노드를 인쇄 할 수 없습니다.

  19. 19

    MVC 컨트롤러에 대한 마지막 인수로서의 파일 이름

  20. 20

    PHP는 변수의 마지막 두 문자를 확인합니다.

  21. 21

    마지막 명령의 인수를 사용하여 명령 실행

  22. 22

    파이썬 : 변수의 마지막 세 숫자가 000인지 아닌지 어떻게 확인합니까?

  23. 23

    패턴으로 파일의 마지막 부분 제거-체인에서 마지막 인증서 제거

  24. 24

    awk의 마지막 줄을 두 번 인쇄하지 마십시오.

  25. 25

    xargs로 마지막 인수 수정

  26. 26

    이것이 FileSystemWatcher onChanged 이벤트의 마지막 변경인지 어떻게 확인할 수 있습니까?

  27. 27

    피보나치 수열의 부분합의 마지막 숫자

  28. 28

    변수의 마지막 세 문자가 다른 변수와 일치하는지 어떻게 확인합니까?

  29. 29

    css 마지막 요소가 4의 배수 인 경우 마지막 4 개를 선택하고, 3의 배수 인 경우 마지막 3 개를 선택합니다.

뜨겁다태그

보관