Chapter 2 C++ 기초 문법
2.1 라이브러리 불러오기
#include <라이브러리 이름>
을 통해 C++ 라이브러리를 불러올 수 있다. R에서 library(패키지명)
을 사용하는 것과 비슷하다.
#include <RcppEigen.h>
#include <Rcpp.h>
2.2 변수선언
2.2.1 R에서 변수선언
<- 1 # 정수형
a <- 1.5 # 실수형
b <- TRUE # 논리형
c <- "Rcpp" # 문자형 d
2.2.2 C++에서 변수선언
int a = 1; // 정수형
double b = 1.5; // 실수형
bool c = true; // 논리형
char d = "Rcpp"; // 문자형
C++에서는 항상 코드 줄의 마지막에 ;
(세미콜론)을 적어주어야 한다.
2.2.3 미리 선언 후 나중에 값 저장
int a;
100; a =
R에서는 변수의 자료형을 지정해주지 않더라도 자동으로 자료형을 변환해주는 반면, C/C++에서는 자료형을 확실히 정해주어야 한다.1
2.3 if 문
2.3.1 R에서의 if 문
<- 10
a if (a < 5) {
print("5보다 작다")
else if (a < 8) {
} print("8보다 작다")
else {
} print("8보다 크다")
}
2.3.2 C++에서의 if 문
int a = 10;
if (a < 5) {
std::cout << "5보다 작다" << "\n";
else if (a < 8) {
} std::cout << "8보다 작다" << "\n";
else {
} std::cout << "8보다 크다" << "\n";
}
C++에서 print를 하기 위해서는 C++ 표준 템플릿 라이브러리(STL : Standard Template Library) 내의 std::cout
을 이용해야 한다. (Rcpp 내의 Rcpp::Rcout
을 이용해도 된다.)
여기서 라이브러리::함수
는 라이브러리 내의 함수에 접근한다는 의미로 R에서도 동일하게 사용되는 방법이다.
R에서와 마찬가지로 라이브러리명을 제외하고 함수명으로만 사용하는 방법은 Namespace
를 활용하는 방법이며 이는 Rcpp 파일의 구조 에서 설명하겠다.
2.4 for 문
2.4.1 R에서의 for 문
for (i in 1:10) {
print(i)
}
2.4.2 C++에서의 for 문
for (int i = 0; i < 10; i++) {
std::cout << i << "\n";
}
2.5 while 문
2.5.1 R에서의 while 문
<- 0
n while (n < 5) {
print(n)
<- n + 1
n }
2.5.2 C++에서의 while 문
int n = 0;
while (n < 5) {
"\n";
Rcpp::Rcout << n << 1;
n = n + }
2.6 함수
2.6.1 R에서의 함수 정의
# 두 실수의 합을 구하는 함수
<- function(a, b) {
add <- a + b
val return(val)
}
2.6.2 C++에서의 함수 정의
// 두 실수의 합을 구하는 함수
double add(double a,
double b) {
double val = a + b;
return val;
}
C++에서 함수를 정의할 때 유의해야할 점은 input의 자료형과 output의 자료형을 반드시 명시해주어야 한다는 것이다. 아마 R 사용자에게 가장 익숙치 않은 부분일 것이고, 보통 여기서 에러가 매우 많이 발생한다. 이 부분을 항상 주의하도록 하자!
위의 4가지 뿐 아니라 실수의 자릿수 등을 더 디테일하게 정할 수 있는 자료형들이 존재하며 이는 많은 블로그들에서 확인할 수 있다.↩︎