1. 학습
  2. /
  3. 강의
  4. /
  5. Rcpp로 R 코드 최적화하기

Connected

연습 문제

STL 벡터

standard template library(stl)는 유연한 알고리즘과 자료 구조를 제공하는 C++ 라이브러리입니다. 예를 들어, stl의 double 벡터는 Rcpp의 NumericVector와 유사한 "네이티브 C++" 대응입니다. 다음 코드는 열 개의 원소를 가진 표준 double 벡터 x를 생성합니다.

std::vector<double> x(10);

일반적으로는 R과 유사하게 동작하는 많은 편의 메서드(mean(), round(), abs() 등)를 사용할 수 있으므로 Rcpp 벡터 타입을 사용하는 편이 더 합리적입니다. 하지만 stl 벡터의 장점은 매번 데이터를 복사하지 않고도 크기를 동적으로 변경할 수 있다는 점입니다. 덕분에 이전 연습 문제의 "나쁜" 함수처럼 더 단순한 코드를 작성하면서도 "좋은" 코드의 성능을 유지할 수 있습니다.

지침

100 XP
  • 양수를 선택하는 stl 벡터 기반 함수 select_positive_values_std()의 정의를 완성하세요.
    • 함수 반환 타입을 std::vector<double>을 사용해 표준 double 벡터로 지정하세요.
    • 크기가 0인 표준 double 벡터 positive_x를 정의하세요.
    • for 루프의 if 블록 안에서, positive_x의 push_back()을 사용해 x의 i번째 원소를 추가하세요.
  • 비교를 위해 이전 연습 문제의 good_select_positive_values_cpp()가 작업 공간에 준비되어 있습니다. 두 함수의 상대적 속도를 확인하려면 콘솔 출력을 살펴보세요.