مرنة-حجم arma ناقلات تخصيص صحيح في العامة أو خاصية Rcpp?
-
21-12-2019 - |
سؤال
أنا باستخدام Rcpp الحزمة إلى كتابة التعليمات البرمجية التي قد الرئيسي نسبة مكتوب في C++ و نسبة أقل في ر.
بناء على ما عرفت من C++, كل على عكس R ، كل المتغيرات في C++ يجب أن تعلن مقدما وهذا الإعلان يتضمن كل نوع وحجم.فعلى سبيل المثال عندما نقول:
arma::vec test(2);
ثم أفترض الاختبار المدرع ناقلات مع حجم 2 مما يعني أننا لا ينبغي أن تعيين أي شيء من حجم مختلف لاختبار.هل هذا صحيح ؟
هنا هو بلدي التحدي:
في قانون بلدي لدي حلقة التي يعين ناقلات مختلفة الحجم (عادة أكبر من 2) "اختبار ناقلات" دون redeclaration من الاختبار .لدهشتي, الكود يعمل بشكل جيد تماما دون أي تجميع خطأ !
في كل التكرار هنا هو كيف يمكنني تعيين ناقلات جديدة لاختبار:
test = Rcpp::as<arma::vec>(myList["aVecFromMyList"]);
السؤال:
هو أن المدرع ميزة نتمكن من تعيين ناقلات من أطوال مختلفة لاختبار والتي هي في البداية أعلن أن حجم 2 ؟ أو انها Rcpp حزمة الميزة ؟
شكرا جزيلا على مساعدتكم.
المحلول
أنت تسأل عن حجم ناقلات في أن يتم تشفيرها في نوع.عند تحديد هذا شيء هو من نوع arma::vec
, أنت تسمح له أن يقبل arma::vec
s من أي حجم.
إذا كنت ترغب في فرض حجم القيد في نوع إذا كنت تريد شيئا مثل arma::vec::fixed<N>
, حيث في حالة N
سيكون 2.هذا هو النوع الذي يفرض القيد أن ناقلات يجب أن يكون حجم N
.هناك أيضا typedefs منخفضة أرقام الإصدارات من هذه ، على سبيل المثال vec2
كما ثابت متجه من حجم 2.
سيكون لديك لتعديل as
دعوة وبالمثل وأعتقد -- نأمل أن يعمل ، لم أجربها.
يجب عليك قراءة المدرع مستندات;المدرعة مستندات ربما بعض من أنظف وأكثر فائدة من هناك.