অন্য প্রশ্নের উত্তর দেওয়ার প্রক্রিয়ায় আমি std::vector::erase()
এবং এর জন্য কিছুটা পৃথক শব্দের উপর হোঁচট খেয়েছি std::deque::erase()
।
সি ++ 14 এ সম্পর্কে যা বলেছে std::deque::erase
( [deque.modifiers]/4-6
, জোর আমার):
প্রভাব: ...
জটিলতা: ডেস্ট্রাক্টরের কাছে কলগুলির সংখ্যা মুছে যাওয়া উপাদানগুলির সংখ্যার সমান, তবে অ্যাসাইনমেন্ট অপারেটরের কলগুলির সংখ্যা মুছে যাওয়া উপাদানগুলির আগে উপাদানগুলির সংখ্যার কম হওয়ার চেয়ে কম নয় এবং পরবর্তী উপাদানগুলির সংখ্যা মুছে ফেলা উপাদান।
ছোঁড়ার: কিছুই যদি না একটি ব্যতিক্রম কপি কন্সট্রাকটর, স্থানান্তর কন্সট্রাকটর নিয়োগ অপারেটর, বা পদক্ষেপ নিয়োগ অপারেটর দ্বারা নিক্ষিপ্ত হয়
T
।
এটি এখানে std::vector::erase
( [vector.modifiers]/3-5
) সম্পর্কে যা বলেছে তা এখানে :
প্রভাব: ...
জটিলতা: এর বিনাশকারী
T
যতবার বলা হয় মুছে ফেলা উপাদান সংখ্যার সমান কিন্তু পদক্ষেপ নিয়োগ অপারেটর এরT
যতবার বলা হয় মুছে ফেলা উপাদান পর ভেক্টর উপাদানের সংখ্যা সমান।ছোঁড়ার: কিছুই যদি না একটি ব্যতিক্রম কপি কন্সট্রাকটর, স্থানান্তর কন্সট্রাকটর নিয়োগ অপারেটর, বা পদক্ষেপ নিয়োগ অপারেটর দ্বারা নিক্ষিপ্ত হয়
T
।
আপনি দেখতে পাচ্ছেন যে, উভয়ের জন্য ব্যতিক্রমের স্পেসিফিকেশন একই, তবে std::vector
এটির জন্য স্পষ্টভাবে উল্লেখ করা হয়েছে যে মুভ অ্যাসাইনমেন্ট অপারেটর বলা হয়।
এছাড়া জন্য প্রয়োজন এর T
করা MoveAssignable
জন্য erase()
উভয় সঙ্গে কাজ করার std::vector
এবং std::deque
(সারণি 100), কিন্তু এই পদক্ষেপ নিয়োগ অপারেটর উপস্থিতিতে পরোক্ষভাবে না: এক একটি কপি নিয়োগ অপারেটর সংজ্ঞায়িত করতে পারেন, এবং পদক্ষেপ নিয়োগ অপারেটর সংজ্ঞায়িত না, এবং এই বর্গ হবে হতে MoveAssignable
।
std::vector::erase()
সেক্ষেত্রে , আমি জিসিসি এবং কলংয়ের সাথে চেক করেছি এবং প্রকৃতপক্ষে কোনও স্থানান্তর অ্যাসাইনমেন্ট অপারেটর না থাকলে কপি অ্যাসাইনমেন্ট অপারেটরকে কল করেছি এবং এটিওstd::deque::erase()
( ডেমো ) করে।
সুতরাং প্রশ্নটি হ'ল: আমি কি কিছু মিস করেছি, বা এটি স্ট্যান্ডার্ডের (সম্পাদকীয়) সমস্যা?
আপডেট: আমি একটি এলডাব্লুজি ইস্যু # 2477 জমা দিয়েছি ।