मैं C ++ में उच्च प्रदर्शन और कम मेमोरी ओवरहेड को ध्यान में रखते हुए बहुत सारे गणना कोड के साथ काम करता हूं। यह एसटीएल कंटेनरों (ज्यादातर vector
) का उपयोग करता है , और लगभग हर एक फ़ंक्शन में उस कंटेनरों पर पुनरावृत्त करता है।
पुनरावृति कोड इस तरह दिखता है:
for (int i = 0; i < things.size(); ++i)
{
// ...
}
लेकिन यह हस्ताक्षरित / अहस्ताक्षरित बेमेल चेतावनी (विजुअल स्टूडियो में C4018) का उत्पादन करता है ।
int
कुछ unsigned
प्रकार के साथ बदलना एक समस्या है क्योंकि हम अक्सर ओपनएमपी प्रैग्मैस का उपयोग करते हैं, और इसके लिए काउंटर की आवश्यकता होती है int
।
मैं (सैकड़ों) चेतावनियों को दबाने वाला हूं, लेकिन मुझे डर है कि मैंने समस्या के कुछ सुरुचिपूर्ण समाधान को याद किया है।
पुनरावृत्तियों पर । मुझे लगता है कि उपयुक्त स्थानों पर लागू होने पर पुनरावृत्तियाँ महान हैं। मैं जिस कोड के साथ काम कर रहा हूं, वह कभी भी रैंडम-एक्सेस कंटेनरों को list
या कुछ में नहीं बदलेगा (इसलिए int i
पहले से ही कंटेनर एग्नॉस्टिक है), और हमेशा वर्तमान सूचकांक की आवश्यकता होगी । और सभी अतिरिक्त कोड आपको टाइप करने की आवश्यकता होती है (इट्रेटर ही और इंडेक्स) बस मामलों को उलझाते हैं और अंतर्निहित कोड की सादगी को बाधित करते हैं।
int
।