मेरे पास एक वेक्टर वस्तु है:
std :: vector & lt; std :: vector & lt; MyClass & gt; & gt; _मैट्रिक्स;
यह कुछ डेटा के साथ 2 डी सरणी है। जब मैं इनके साथ आयामों का आकार बदलना चाहता हूं:
_matrix.resize (_rows, std :: vector & lt; MyReal & gt; (_ colms)); // _ पंक्तियों और _colms ints हैं
यह आदेश ऑब्जेक्ट के लिए कुछ नहीं करता है तो इसका आकार बदलने के लिए मुझे पहले कॉल करना होगा:
_matrix.clear ();
और फिर:
_matrix.resize (_rows, std :: vector & lt; MyReal & gt; (_ colms));
बेशक, मैं डेटा खो रहा हूं (मेरे मामले में यह कोई फर्क नहीं पड़ता)
क्या यह अपेक्षित व्यवहार है?
<पी > डॉक्स के लिए:
_Val: नए तत्वों का मान सदिश में जोड़ा जाता है यदि नया आकार बड़ा आकार बड़ा हो।
केवल नई पंक्तियों को अतिरिक्त कॉलम ( std :: vector & lt; MyReal & gt; (_ colms)
) के साथ वैक्टर प्राप्त होते हैं। resize
मौजूदा पंक्तियों को नहीं बदलेगा।
अपडेट: पूरे वेक्टर का आकार बदलने के लिए, मौजूदा पंक्तियों से दोबारा पुनरावृति करें और उन वैक्टर का आकार बदलें, फिर जोड़ें नई पंक्तियाँ ऐसा कुछ काम करना चाहिए:
के लिए (आकार_टी i = 0; i & lt; _matrix.size (); i ++) _matrix [i] .resize (_colms); _matrix.resize (_rows, std :: vector & lt; MyReal & gt; (_ colms));
Comments
Post a Comment