क्या vector.back() और vector[vector.size() - 1] को std::vector के साथ कॉल करने में कोई अंतर है?

2
CheeseCrustery 4 फरवरी 2020, 16:12
6
पठनीयता एक प्रमुख अंतर के रूप में दिमाग में आती है
 – 
StoryTeller - Unslander Monica
4 फरवरी 2020, 16:13
2
वह मामला जहां वेक्टर खाली है, दिमाग में भी आता है।
 – 
Paul R
4 फरवरी 2020, 16:14
7
जब वेक्टर खाली होता है, दोनों अपरिभाषित व्यवहार का कारण बनेंगे।
 – 
Adrian Mole
4 फरवरी 2020, 16:14
3
अन्य उत्तरों के अलावा, बैक अन्य मानक कंटेनरों में मौजूद है जो एक सूची की तरह यादृच्छिक अभिगम नहीं हैं। इसका उपयोग करने से आपके कोड कंटेनर प्रकार को अज्ञेयवादी बनाने में मदद मिलेगी।
 – 
Steve
4 फरवरी 2020, 16:26
अच्छी बात। मैंने इसे अपने उत्तर में जोड़ा।
 – 
eerorika
4 फरवरी 2020, 16:32

2 जवाब

सबसे बढ़िया उत्तर

vector.back() पढ़ने और लिखने में आसान है। साथ ही, c[c.size() - 1] की तुलना में अधिक कंटेनर c.back() की पेशकश करते हैं, जो सामान्य कोड के लिए महत्वपूर्ण है।

डिबग-रनटाइम में, दोनों के समान रूप से खाली कंटेनरों में फंसने की संभावना है, न ही परिणामी कोड है और इस प्रकार अनुकूलन का उपयोग करते समय उनके प्रदर्शन में काफी अंतर होने की उम्मीद है।

3
Deduplicator 4 फरवरी 2020, 16:35

vector.back() एक फ़ंक्शन कॉल है और लिखने के लिए छोटा है: यह आसान है। vector[vector.size() - 1] दो फ़ंक्शन कॉल और एक घटाव है, और लिखने में लंबा है: यह अधिक जटिल है।

व्यवहारिक रूप से, वे std::vector के लिए समान हैं। हालांकि back अधिक सामान्य है, और सभी मानक द्विदिश कंटेनरों के साथ उपयोग किया जा सकता है (std::forward_list एकमात्र मानक कंटेनर है जो इसका समर्थन नहीं करता है)। operator[] केवल रैंडम एक्सेस कंटेनर द्वारा समर्थित है।

2
eerorika 4 फरवरी 2020, 16:32
1
आश्चर्य है कि फ़ंक्शन कॉल क्यों गिनें ... यह प्रदर्शन के बारे में कुछ नहीं कहता है लेकिन ऐसा लगता है कि इससे संबंधित है ...
 – 
Jarod42
4 फरवरी 2020, 16:23
1
प्रदर्शन के बारे में कोई सवाल ही नहीं था। अंतर के बारे में एक सवाल था। संचालन की संख्या भिन्न होती है, और यह जटिलता को प्रभावित करती है, जो प्रदर्शन नहीं होने पर पठनीयता को प्रभावित करती है।
 – 
eerorika
4 फरवरी 2020, 16:25
मुझे समझ में नहीं आता, निश्चित रूप से यह यहां प्रदर्शन को प्रभावित नहीं करता है, लेकिन अगर मैं गलत नहीं हूं, तो फ़ंक्शन कॉल की लागत होती है, इसलिए सैद्धांतिक रूप से, मैं कहूंगा कि हमारे पास जितने अधिक फ़ंक्शन कॉल होंगे, उतना ही यह प्रदर्शन को कम करेगा। क्या मै गलत हु ?
 – 
Fareanor
4 फरवरी 2020, 17:11
1
@Fareanor: back() को दूसरे के साथ आंतरिक रूप से लागू किया जा सकता है, (back कम प्रदर्शन करने वाला)। मुझे लगता है कि गिनती भ्रामक है क्योंकि पाठक इसे प्रदर्शन की चिंता के रूप में पढ़ सकते हैं, और नहीं, जैसा कि उत्तर से अपेक्षित है, पढ़ने में "कठिनाई"। (मैं "जटिलता" शब्द से बचता हूं जिसमें आईएमओ एक ही मुद्दा है)।
 – 
Jarod42
4 फरवरी 2020, 17:47
ओह ठीक है, मैंने आपकी पहली टिप्पणी पढ़कर इन चिंताओं को नहीं देखा। सफाई देने के लिए धन्यवाद :)
 – 
Fareanor
4 फरवरी 2020, 18:00