2011-05-22 15 views
18

क्यों std::swap को C12+ 11 के लिए <utility> शीर्षलेख में स्थानांतरित किया गया है?std :: swap क्यों <utility> पर ले जाया गया था?

N3290 C.2.7 का कहना है: मूल विशेषता पर

17.6.3.2

प्रभाव: समारोह स्वैप एक अलग शीर्षक के लिए ले जाया

दलील: स्वैप के लिए <algorithm> पर निर्भरता निकालें। मूल विशेषता पर

प्रभाव: मान्य सी ++ 2003 कोड है कि स्वैप की उम्मीद <algorithm> में होने की संकलित किया गया है बजाय <utility> शामिल करने के लिए हो सकता है।

मैं बोल्ड में भाग को समझ नहीं सकता। किस तरह की निर्भरता के बारे में बात की जा रही है और क्यों?

+0

यह वास्तव में अनुभाग संख्या नहीं है, आपके द्वारा उद्धृत अनुच्छेद अनुभाग C.2.7 में पाया गया है। –

+0

@बेन: संपादित किया गया :) :) –

उत्तर

33

समिति आपको swap() का उपयोग करने के लिए बड़ी और अधिक जटिल <algorithm> शीर्षलेख फ़ाइल पर संकलन-समय निर्भरता को पेश किए बिना अनुमति देना चाहता था। चूंकि swap() का व्यापक रूप से उपयोग किया जाता है, इसलिए यह समझ में आता है कि आप जितनी छोटी हो सके उतनी अतिरिक्त सामान के साथ अपनी परिभाषा को खींचने दें; यह आमतौर पर उन फ़ाइलों के लिए तेज़ संकलन समय का कारण बनता है जिन्हें अन्यथा <algorithm> की आवश्यकता नहीं होती है। इसका नया घर इसे अनियंत्रित ओवरहेड पेश किए बिना इस्तेमाल करने की अनुमति देता है।

+0

सटीक स्पष्टीकरण के लिए धन्यवाद। :) –