সরানো পাত্রে পুনরায় ব্যবহার করার সঠিক উপায় কী?
std::vector<int> container;
container.push_back(1);
auto container2 = std::move(container);
// ver1: Do nothing
//container2.clear(); // ver2: "Reset"
container = std::vector<int>() // ver3: Reinitialize
container.push_back(2);
assert(container.size() == 1 && container.front() == 2);
আমি সি ++ 0 এক্স স্ট্যান্ডার্ড খসড়াটিতে যা পড়েছি তা থেকে; ver3 হ'ল সঠিক উপায় বলে মনে হচ্ছে, যেহেতু সরানোর পরে কোনও বস্তু একটিতে থাকে
"অন্যথায় নির্দিষ্ট না করাতে এ জাতীয় স্থানান্তরিত অবজেক্টগুলি বৈধ তবে অনির্ধারিত অবস্থায় স্থাপন করা হবে।"
এটি "অন্যথায় নির্দিষ্ট করা" যেখানে এমন কোনও নজির আমি পাইনি instance
যদিও আমি ভার্3টিকে কিছুটা চক্রাকারে খুঁজে পেয়েছি এবং ভেরি 3 আরও পছন্দসই পছন্দ করবে যদিও ভেক 3 কিছু অতিরিক্ত অপ্টিমাইজেশনের অনুমতি দিতে পারে তবে অন্যদিকে সহজেই ভুলগুলি হতে পারে।
আমার ধারণা সঠিক?
clear
, কারণ এতে কোনও পূর্বশর্ত নেই (এবং এভাবে বস্তুর অবস্থার উপর কোনও নির্ভরতা নেই)।