हां। auto
को प्राथमिकता दी जाती है। यह करने के लिए
std::vector<int> v; //before
: अगर आप से v
की घोषणा बदल क्योंकि
std::vector<float> v; //after
आप for
में int &
का उपयोग करते हैं, तो आप उस बदलने के लिए भी है। लेकिन auto
के साथ, बदलने की कोई ज़रूरत नहीं है!
मेरी राय में, auto
के साथ काम करना programming to interface जैसा कम या कम है।
for(auto & e : v)
{
e += 2;
}
इस में: तो अगर आप पाश में एक ऑपरेशन +=
करते हैं, और तुम सच में नहीं है जब तक प्रकार +=
कार्रवाई का समर्थन करता के रूप में पाश चर e
के प्रकार के बारे में परवाह है, तो auto
समाधान है उदाहरण के लिए, आप सभी को इस बात की परवाह है कि e
+=
का समर्थन int
के साथ दाएं हाथ पर है। यह उपयोगकर्ता द्वारा परिभाषित प्रकारों के लिए भी काम करेगा, जिसने operator+=(int)
, या operator+=(T)
को परिभाषित किया है, जहां T
एक प्रकार है जो int
से अंतर्निहित रूपांतरण का समर्थन करता है।यह आप इंटरफेस करने प्रोग्रामिंग कर रहे हैं के रूप में अगर है:
for(Animal * animal : animals)
{
animal->eat(food); //still program to interface
}
या बस इस:
for(auto animal : animals)
{
animal->eat(food); //still program to interface
}
यह है
std::vector<Animal*> animals;
animals.push_back(new Dog());
animals.push_back(new Cat());
animals.push_back(new Horse());
for(size_t i = 0 ; i < animals.size(); ++i)
{
animals[i]->eat(food); //program to interface
}
बेशक
, आप के रूप में इस पाश लिखने के लिए चाहते हैं अभी भी programming to interface।
लेकिन एक ही समय में, @ डेविड की टिप्पणी में बात ध्यान देने योग्य है।
यह दोनों तरीकों से पढ़ा जा सकता है, यह बेहतर हो सकता है यह बताने वाला 'पूर्णांक और' एक 'नाव और' से संकलक चुपचाप कोड है कि ints के साथ काम करने के लिए था स्वीकार करने ... नहीं से सेट किया जा सकता है कि एक संकलन त्रुटि प्राप्त करने के लिए कह रही है कि यह एक बेहतर विचार है 'पूर्णांक और' के लिए, यह सब क्या आप 'for' पाश के शरीर में करते हैं, अगर यह सही प्रकार पर निर्भर नहीं करता' auto' बेहतर –
@ DavidRodríguez-dribeas हो जाएगा पर निर्भर करता है : मुझे लगता है कि आपने जो कहा वह बहुत असामान्य परिदृश्य है। आम तौर पर, हमें 'int' को 'float' में बदलना होगा, जिस स्थिति में 'ऑटो' एक बेहतर समाधान है। – Nawaz
सहमत हुए। ज्यादातर मामलों में 'ऑटो और' क्या करेंगे ... लेकिन मैं अभी तक हर जगह स्पष्ट नहीं किया जा रहा प्रकार :) के साथ सहज नहीं हूँ (छोड़कर जब मैं वास्तव में पता करने के लिए नहीं चाहता!) –