คำถามติดแท็ก emplace

5
แทรก vs emplace เทียบกับตัวดำเนินการ [] ในแผนที่ c ++
ฉันใช้แผนที่เป็นครั้งแรกและฉันตระหนักว่ามีหลายวิธีในการแทรกองค์ประกอบ คุณสามารถใช้emplace(), operator[]หรือinsert()บวกสายพันธุ์เช่นการใช้หรือvalue_type make_pairแม้ว่าจะมีข้อมูลมากมายเกี่ยวกับพวกเขาทั้งหมดและคำถามเกี่ยวกับบางกรณี แต่ฉันก็ยังไม่เข้าใจภาพรวม ดังนั้นสองคำถามของฉันคือ: อะไรคือข้อได้เปรียบของแต่ละคนที่มีมากกว่าคนอื่น ๆ ? จำเป็นต้องเพิ่ม emplace ลงในมาตรฐานหรือไม่? มีอะไรที่เป็นไปไม่ได้มาก่อนโดยไม่ได้?

2
ประสิทธิภาพของ C ++ 11 push_back () พร้อม std :: move เทียบกับ emplace_back () สำหรับอ็อบเจ็กต์ที่สร้างไว้แล้ว
emplace_back()โดยทั่วไปแล้วใน C ++ 11 เป็นที่ต้องการ (ในแง่ของประสิทธิภาพ) push_back()เนื่องจากอนุญาตให้มีการก่อสร้างในสถานที่แต่ก็ยังคงเป็นเช่นนี้เมื่อใช้push_back(std::move())กับวัตถุที่สร้างไว้แล้วหรือไม่ ตัวอย่างเช่นemplace_back()ยังคงเป็นที่ต้องการในกรณีต่อไปนี้? std::string mystring("hello world"); std::vector<std::string> myvector; myvector.emplace_back(mystring); myvector.push_back(std::move(mystring)); // (of course assuming we don't care about using the value of mystring after) นอกจากนี้มีประโยชน์ในตัวอย่างข้างต้นหรือไม่ที่จะทำ: myvector.emplace_back(std::move(mystring)); หรือการย้ายที่นี่ซ้ำซ้อนทั้งหมดหรือไม่มีผล?
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.