मेरे पास मेरे "आइटम" int सरणी के लिए एक काम करने वाला घूर्णन कार्य चल रहा है। नीचे दिया गया कोड यह हो जाता है, सिवाय इसके कि मैं अनावश्यक रूप से मूल्यों को स्थानांतरित कर रहा हूं। मैं "इनस्थल" रोटेशन को स्वीकार करने की कोशिश कर रहा हूं। मेरा मतलब यह है कि पीटीआरआर सरणी से मूल्यों को पकड़ने के बजाय बढ़ेगा या घट जाएगा .. जिसकी मुझे इस विधि के लिए इस तरह दक्षता स्तर को "ऊपर" करने की आवश्यकता है .. कोई सुझाव?प्लेस रोटेशन में सी ++ प्रैक्टिस
void quack::rotate(int nRotations)
{
if (count <= 1) return;
else // make sure our ptrs are where we want them.
{
intFrontPtr = &items[0].myInt;
intBackPtr = &items[count-1].myInt;
}
for (int temp = 0; nRotations != 0;)
{
if (nRotations > 0)
{
temp = *intFrontPtr;
*intFrontPtr = *intBackPtr;
*intBackPtr = temp; // Connect temps for the rotation
--intBackPtr; // Move left [...<-] into the array
}
else if (nRotations < 0)
{
temp = *intBackPtr;
*intBackPtr = *intFrontPtr;
*intFrontPtr = temp; // Connect temps for the rotation
++intFrontPtr; // Move right [->...] into the array
}
if (intBackPtr == &items[0].myInt ||
intFrontPtr == &items[count-1].myInt)
{
intFrontPtr = &items[0].myInt;
intBackPtr = &items[count-1].myInt; // need to re-set
if (nRotations > 0) nRotations--; // Which ways did we rotate?
else nRotations++;
}
}
}
अरे हाँ, मैं ग अभ्यास करने के लिए कोशिश कर रहा ++ और पता उनके कई के आसपास चल कार्यों कि यह पहले से ही करने के लिए प्रोग्राम किया जाता है ... मैं "मेरी अपनी निर्माण" की कोशिश कर रहा। मुझे लगता है कि मैंने इसे वाक्य रचनात्मक रूप से नीचे कर लिया है, लेकिन दक्षता हमेशा होती है जहां मैं संघर्ष करता हूं। एक नौसिखिया के रूप में, मैं इस पहलू की ओर आलोचना की सराहना करता हूं ..
कि बाईं ओर सरणी घूर्णन नहीं है? –
हां। टाइपो तय – sdtom
महान चाल। यद्यपि आप हमेशा एक तत्व को दो बार ले जा रहे हैं, जबकि इसे एक बार में किया जा सकता है। – Toad