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 से अधिक कुशल है?