দর্শনার্থী যা বলেছেন তা ছাড়াও:
void emplace_back(Type&& _Val)
এমএসসিভি 10 দ্বারা প্রদত্ত ফাংশনটি যথোপযুক্ত এবং অপ্রয়োজনীয়, কারণ আপনি উল্লেখ করেছেন যে এটি কঠোর সমতুল্য push_back(Type&& _Val)
।
তবে আসল সি ++ 0x ফর্ম emplace_back
সত্যিই দরকারী: void emplace_back(Args&&...)
;
পরিবর্তে একটি গ্রহণ value_type
এটি আর্গুমেন্টগুলির একটি বৈচিত্রপূর্ণ তালিকা লাগে, যার অর্থ হল যে আপনি এখন আর্গুমেন্টগুলি পুরোপুরি ফরোয়ার্ড করতে পারবেন এবং কোনও অস্থায়ী ছাড়াই সরাসরি কোনও পাত্রে সরাসরি কোনও অবজেক্ট তৈরি করতে পারবেন।
এটি কার্যকর কারণ কারণ আরভিও এবং চালচলনের যেকোন চতুরতার বিষয়টি টেবিলের কাছে নিয়ে আসেনি এখনও জটিল জটিল পরিস্থিতি রয়েছে যেখানে ধাক্কা ব্যাক অপ্রয়োজনীয় অনুলিপিগুলি তৈরি করার সম্ভাবনা রয়েছে (বা সরানো)। উদাহরণস্বরূপ, এ এর traditionalতিহ্যবাহী insert()
ফাংশন সহ std::map
, আপনাকে একটি অস্থায়ী তৈরি করতে হবে, যা একটিতে অনুলিপি করা std::pair<Key, Value>
হবে, যা পরে মানচিত্রে অনুলিপি করা হবে:
std::map<int, Complicated> m;
int anInt = 4;
double aDouble = 5.0;
std::string aString = "C++";
// cross your finger so that the optimizer is really good
m.insert(std::make_pair(4, Complicated(anInt, aDouble, aString)));
// should be easier for the optimizer
m.emplace(4, anInt, aDouble, aString);
তাহলে কেন তারা এমএসভিসিতে এমপ্লে_ব্যাকের সঠিক সংস্করণটি প্রয়োগ করেনি? প্রকৃতপক্ষে, এটি আমাকে খুব আগেই বাগিয়ে দিয়েছে, তাই আমি ভিজ্যুয়াল সি ++ ব্লগে একই প্রশ্নটি জিজ্ঞাসা করেছি । মাইক্রোসফ্টে ভিজ্যুয়াল সি ++ স্ট্যান্ডার্ড লাইব্রেরি বাস্তবায়নের অফিসিয়াল রক্ষণাবেক্ষণকারী স্টিফান টি লাভভেজের উত্তর এখানে রয়েছে।
প্রশ্ন: বিটা 2 এম্প্লেস ফাংশনগুলি এখনই কেবল কোনও ধরণের স্থানধারক হিসাবে রয়েছে?
উত্তর: আপনারা জানেন যে, ভিসি 10 তে ভেরিয়াদিক টেম্পলেট প্রয়োগ করা হয় না। আমরা তাদের প্রিপ্রোসেসর make_shared<T>()
মেশিনির মতো জিনিসগুলির মতো , টিপল এবং নতুন জিনিসগুলিতে সিমুলেট করি
<functional>
। এই প্রিপ্রসেসর যন্ত্রপাতিটি ব্যবহার ও রক্ষণাবেক্ষণ করা তুলনামূলকভাবে কঠিন। এছাড়াও, এটি সংকলনের গতিতে উল্লেখযোগ্যভাবে প্রভাব ফেলে, কারণ আমাদের বারবার সাবহেডারের অন্তর্ভুক্ত করতে হবে। আমাদের সময়ের সীমাবদ্ধতা এবং সংকলনের গতির উদ্বেগের সংমিশ্রণের কারণে আমরা আমাদের এম্বেস ফাংশনে ভেরিয়াদিক টেম্পলেটগুলি সিমুলেটেড করি না।
সংকলকটিতে যখন ভ্যারিয়্যাডিক টেম্পলেটগুলি প্রয়োগ করা হয়, আপনি আশা করতে পারেন যে আমরা আমাদের এমপ্লে ফাংশন সহ গ্রন্থাগারগুলিতে সেগুলি গ্রহণ করব। আমরা কনফারেন্সকে খুব গুরুত্ব সহকারে নিই, তবে দুর্ভাগ্যক্রমে, আমরা একবারে সব কিছু করতে পারি না।
এটি একটি বোধগম্য সিদ্ধান্ত। প্রিপ্রোসেসর ভয়ঙ্কর কৌশলগুলি সহ যে একবার মাত্র একবারে ভেরিয়ডিক টেম্পলেট অনুকরণ করার চেষ্টা করেছিল তারা জানে যে এই জিনিসটি কীভাবে ঘৃণ্য হয়।