В моем понимании, преобразование векторов между Rcpp и C ++ создает новые векторы следующим образом. Правильно ли мое понимание?
При преобразовании вектора Rcpp в вектор C ++ мы используем Rcpp::as<T>()
(например, Rcpp::as<std::string>
для Rcpp::CharacterVector
). Создается std::vector<std::string>
, а исходные элементы Rcpp копируются в вектор C ++ как std::string
. Это означает, что изменение вновь созданных векторных элементов C ++ не влияет на исходные векторные элементы Rcpp.
При преобразовании вектора C ++ в вектор Rcpp мы используем Rcpp::wrap()
. Создается вектор Rcpp с соответствующим типом, а элементы C ++ копируются в вектор Rcpp как объекты Rcpp. Это означает, что изменение вновь созданных векторных элементов Rcpp не влияет на исходные векторные элементы C ++.