मैं प्रोग्राम सीख रहा हूं, और सी ++ मेरी पहली भाषा है। मुझे दिखाने के लिए पॉइंटर्स का उपयोग करके परेशान न करें - मैं उन्हें अभी तक समझ नहीं पा रहा हूं, और इससे परेशान नहीं होगा जब तक कि मेरे पास समर्पित करने के लिए अधिक खाली समय न हो।क्या आप प्रारंभ करने के बाद सी ++ सरणी का आकार बदल सकते हैं?
int mergeSort()
{
const int n = 9;
int originalarray[n] = {1, 3, 5, 7, 9, 2, 4, 6, 8};
const int halfelements = (sizeof(originalarray)/sizeof(int))/2;
int farray[halfelements];
int sarray[halfelements];
for (int i = 0; i < halfelements; i++) {
farray[i] = originalarray[i];
}
for (int i = halfelements, x = 0; i < (halfelements * 2); i++, x++) {
sarray[x] = originalarray[i];
}
मैं सौंपा गया था (मैं नहीं ले रही हूँ कक्षाएं - बस कुछ ही दोस्तों ने मुझे बाहर की मदद करने के साथ सीखने) किसी मर्ज तरह एल्गोरिथ्म, एल्गोरिथ्म के साथ समझाया लेकिन नहीं कार्यान्वयन। मैं इसे फिर से लिखना चाहता हूं ताकि यह अजीब और यहां तक कि पूर्णांक दोनों के लिए काम करेगा। मैंने इस कोड को जोड़ने का प्रयास किया:
if ((n % 2) != 0) int farray[halfelements + 1];
ताकि मैं बाद के सरणी दोनों में पुनरावृत्त करने के लिए एक ही पूर्णांक का उपयोग कर सकूं। एक आकार (farray) 16 बाइट्स, या 4 पूर्णांक होने के लिए दिखा रहा है। तो यह आकार बदल नहीं रहा है। मैं क्या जानना चाहता हूं - क्या प्रारंभ होने के बाद सरणी का आकार बदलना संभव है?
संपादित करें: मैं एक वेक्टर को कैसे कार्यान्वित करूं? मैं समझ नहीं पा रहा हूं कि लूप में इटरेटर्स का उपयोग कैसे करें और मूल्यों की प्रतिलिपि बनाएँ।
ठीक है, धन्यवाद। मैंने यह पता लगाया है कि आप इस एल्गोरिदम में std :: vector को कैसे कार्यान्वित करेंगे।हालांकि मेरी इच्छा है कि मैंने अपने कोड को दोबारा डिबग करने में बिताया नहीं है, बस मेरे फंक्शन हेडर को समझने के लिए "int mergeSort (std :: vector, int)" में एक "" =/ –
jkeys
गायब नहीं था 'वेक्टर की समर्थित नहीं है गतिशील सरणी द्वारा वैसे भी? गतिशील रूप से एक सरणी या वेक्टर को फिर से आकार देने के लिए एक ही प्रदर्शन दंड सही होना चाहिए> – Jason