मैं एक भौतिकी सिमुलेशन विकसित कर रहा हूं, और जैसा कि मैं प्रोग्रामिंग में नया हूं, मैं बड़े कार्यक्रमों (मुख्य रूप से मेमोरी मुद्दों) का उत्पादन करते समय समस्याओं में भाग रहा हूं। मुझे डायनामिक मेमोरी एलोकेशन और डिलीट (नए / डिलीट वगैरह) के बारे में पता है, लेकिन मुझे इस बात का बेहतर तरीका चाहिए कि मैं प्रोग्राम को कैसे स्ट्रक्चर करूं।
मान लीजिए कि मैं एक प्रयोग का अनुकरण कर रहा हूं जो कुछ दिनों के लिए चल रहा है, जिसमें बहुत बड़ी नमूना दर है। मुझे एक अरब नमूनों का अनुकरण करना होगा, और उन पर चलना होगा।
सुपर-सरलीकृत संस्करण के रूप में, हम कहेंगे कि एक प्रोग्राम वोल्टास वी [i] लेता है, और उन्हें पत्नियों में गाया जाता है:
यानी न्यूवी [0] = वी [0] + वी [1] + वी [2] + वी [3] + वी [4]
फिर न्यूवी [1] = वी [१] + वी [२] + वी [३] + वी [४] + वी [५]
तब न्यूवी [2] = वी [2] + वी [3] + वी [4] + वी [5] + वी [6] ... और यह एक अरब नमूनों के लिए जाता है।
अंत में, मेरे पास V [0], V [1], ..., V [1000000000] होगा, जब इसके बजाय केवल अगले चरण के लिए मुझे स्टोर करने की आवश्यकता होगी, अंतिम 5 V [i] रों।
मैं सरणी के उस हिस्से को कैसे हटा / हटाऊंगा जिससे मेमोरी फिर से उपयोग करने के लिए स्वतंत्र हो (उदाहरण के पहले भाग के बाद V [0] जहां इसकी अब आवश्यकता नहीं है)? क्या ऐसे कार्यक्रम की संरचना करने के विकल्प हैं?
मैंने मॉलोक / मुक्त के बारे में सुना है, लेकिन सुना है कि उनका उपयोग C ++ में नहीं किया जाना चाहिए और यह कि बेहतर विकल्प हैं।
बहुत बहुत धन्यवाद!
tldr; सरणियों के हिस्सों (व्यक्तिगत तत्वों) के साथ क्या करना है मुझे अब और ज़रूरत नहीं है कि स्मृति की एक बड़ी राशि ले रहे हैं?
V
एक नए सरणी में संग्रहीत कर सकें । मौलिक रूप से, हालांकि, मुझे लगता है कि आपका मुद्दा या तो आपके एल्गोरिदम या आपके डेटा संरचनाओं में है, और चूंकि हमारे पास कोई विवरण नहीं है, इसलिए यह जानना मुश्किल है कि इसे कुशलता से कैसे किया जाए।