वैसे, ऐसा करने का सबसे तेज़ तरीका यह नहीं है।
अजीब लगता है मुझे पता है, यहाँ कुछ छद्म कोड है:
int array [][];
bool array_is_empty;
void ClearArray ()
{
array_is_empty = true;
}
int ReadValue (int x, int y)
{
return array_is_empty ? 0 : array [x][y];
}
void SetValue (int x, int y, int value)
{
if (array_is_empty)
{
memset (array, 0, number of byte the array uses);
array_is_empty = false;
}
array [x][y] = value;
}
दरअसल, यह अभी भी एरे को क्लियर कर रहा है, लेकिन केवल तब जब एरे को कुछ लिखा जा रहा हो। यह यहाँ एक बड़ा फायदा नहीं है। हालाँकि, यदि 2D सरणी का उपयोग करके कहा गया था, तो कहिए, एक क्वाड ट्री (एक गतिशील एक दिमाग नहीं), या डेटा की पंक्तियों का एक संग्रह है, तो आप बूलियन ध्वज के प्रभाव को स्थानीय कर सकते हैं, लेकिन आपको अधिक झंडे की आवश्यकता होगी। क्वाड ट्री में, रूट नोड के लिए खाली ध्वज को सेट करें, पंक्तियों की सरणी में बस प्रत्येक पंक्ति के लिए ध्वज सेट करें।
जो इस सवाल की ओर जाता है "आप बार-बार एक बड़े 2d सरणी को शून्य क्यों करना चाहते हैं"? सरणी किसके लिए उपयोग की जाती है? क्या कोड को बदलने का कोई तरीका है ताकि सरणी को शून्य करने की आवश्यकता न हो?
उदाहरण के लिए, यदि आपके पास था:
clear array
for each set of data
for each element in data set
array += element
अर्थात्, इसे एक संचय बफर के लिए उपयोग करें, फिर इसे इस तरह बदलने से प्रदर्शन में कोई सुधार नहीं होगा:
for set 0 and set 1
for each element in each set
array = element1 + element2
for remaining data sets
for each element in data set
array += element
यह सरणी को साफ़ करने की आवश्यकता नहीं है, लेकिन फिर भी काम करता है। और यह सरणी को साफ़ करने की तुलना में बहुत तेज़ होगा। जैसा मैंने कहा, सबसे तेज़ तरीका यह है कि मैं इसे पहले स्थान पर न करूँ।