Avatar ·

push_back बनाम emplace_back: C++ में क्या अंतर है और क्या चुनें?

नमस्ते सहकर्मियों! मैंने हाल ही में C++11 सीखना शुरू किया है और std::vector में emplace_back मेथड पर ध्यान गया। पहले मैं हमेशा एलिमेंट जोड़ने के लिए push_back का उपयोग करता था, लेकिन अब देख रहा हूँ कि एक विकल्प आ गया है। मैंने कुछ लेख पढ़े, लेकिन मूलभूत अंतर पूरी तरह से समझ नहीं आया। यहाँ एक सरल उदाहरण है जो मैंने परीक्षण के लिए लिखा: ```cpp #include #include struct Person { std::string name; int age; Person(const std::string& n, int a) : name(n), age(a) {} }; int main() { std::vector people; // विकल्प 1: push_back people.push_back(Person("Alice", 30)); // विकल्प 2: emplace_back people.emplace_back("Bob", 25); } ``` दोनों विकल्प काम करते हैं, लेकिन मैंने देखा कि emplace_back कंस्ट्रक्टर के आर्गुमेंट्स सीधे लेता है, जबकि push_back को एक टेम्परेरी ऑब्जेक्ट की आवश्यकता होती है। लगता है emplace_back अधिक सुविधाजनक है, लेकिन हर जगह लिखा है कि push_back अभी भी प्रासंगिक है। मेरे प्रश्न: 1. emplace_back कब वास्तव में push_back से अधिक कुशल है?