से एक Eigen मैट्रिक्स बनाएं मैं अनिवार्य रूप से करना चाहते हैं क्या इस समारोह को लागू है। मुझे पता है कि इस तरह कुछ हासिल करने का मानक तरीका मानचित्र के साथ है, लेकिन मेरे पास इस दृष्टिकोण के साथ कई मुद्दे हैं।एक सी सरणी
मैं अपने कोड के बाकी के पुनर्लेखन के लिए इनपुट के रूप में नक्शे को स्वीकार नहीं करना चाहते हैं (एक अस्थायी मैट्रिक्स में मानचित्र को कॉपी किए बिना, कि है)। मुझे पता है कि मैट्रिक्सबेस ऑब्जेक्ट्स इनपुट के रूप में लेने के लिए अपने कार्यों को सामान्यीकृत करके ऐसा कर सकता हूं, लेकिन मैंने अपने इनपुट में विशिष्ट मैट्रिक्स टेम्पलेट्स को किसी कारण से परिभाषित किया है - यदि मेरा फ़ंक्शन
Matrix<T, Dynamic, Dynamic, ColMajor>
लेता है, तो ऐसा इसलिए होता है क्योंकि उस प्रकार के केवल मैट्रिक्स का उपयोग किया जाना चाहिए इनपुट के रूप में।आदर्श रूप से, मैं बनाया गया मैट्रिक्स डेटा पॉइंटर का स्वामित्व लेना चाहता हूं, इसलिए मैं सिर्फ साझा_ptr के माध्यम से मैट्रिक्स का प्रबंधन कर सकता हूं और मूल डेटा पॉइंटर को फिर से स्पर्श नहीं करना चाहता।
मेरे प्रारंभिक सोचा मैं एक गैर-आरंभिकृत गतिशील आकार मैट्रिक्स वस्तु बनाने की तरह कुछ कर सकता है कि, और फिर बस वस्तु के आयाम और डेटा सूचक सेट था, लेकिन इस Eigen एपीआई में संभव हो सकता है नहीं लगता है। क्या किसी को किसी भी कामकाज के बारे में पता है?
आपका बदसूरत कामकाज सबसे आसान समाधान प्रतीत होता है, लेकिन क्या यह काफी खतरनाक नहीं है? मैं फिलहाल वास्तविक संकलित कोड पोर्टेबल होने के बारे में बहुत चिंतित नहीं हूं, लेकिन क्या कोई गारंटी है फू और एक टेम्पलेटेड मैट्रिक्सएक्स एक ही इन-मेमोरी व्यवस्था के साथ खत्म हो जाएगा? दूसरा विकल्प के रूप में, यह लग रहा है जैसे मैं अपने तरीकों को फिर से लिखने सकता है की तरह कुछ देखने के लिए: टेम्पलेट शून्य फू (स्थिरांक रेफरी <स्थिरांक मैट्रिक्स <टी, गतिशील, गतिशील, ColMajor>>) और यह उन्हें अनुमति होगी मैट्रिक्स <टी, गतिशील, गतिशील, ColMajor> और मानचित्र <मैट्रिक्स <टी, गतिशील, गतिशील, ColMajor >> इनपुट दोनों स्वीकार करने के लिए? –
user2452966
मेमोरी लेआउट की गारंटी है (ईजिन संस्करणों में एबीआई संगतता)। रेफरी के लिए <> हां, इसका उपयोग कैसे करें।समस्या यह है कि आंशिक रूप से टेम्पलेट पैरामीटर के साथ परिभाषित होने पर यह कम सुविधाजनक होता है क्योंकि मैट्रिक्स या मानचित्र को रेफ <> का वारिस नहीं मिलता है और इसलिए संकलक को सही टेम्पलेट तर्कों को तुरंत लागू करने की अनुमति नहीं दी जाएगी। तो आपको या तो इसे स्पष्ट रूप से प्रदान करना होगा, या स्पष्ट रूप से रेफरी <> में रूपांतरण करना होगा, या यदि आप केवल 2 या 3 स्केलर प्रकारों से चिंतित हैं, तो आप 2-3 ओवरलोड को सामान्य संस्करण (स्वच्छतम समाधान) भी कह सकते हैं)। – ggael