স্ট্যান্ড :: ভেক্টর :: মুছে ফেলুন () এবং স্ট্যান্ড :: ডেক :: মরে ()


135

অন্য প্রশ্নের উত্তর দেওয়ার প্রক্রিয়ায় আমি 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 জমা দিয়েছি ।


14
মান হিসাবে একটি ত্রুটি মনে হচ্ছে।
ব্যারি

4
k ack। একটি এলডাব্লুজি-ইস্যু উপযুক্ত হবে।
কলম্বো

4
সাধারণত খসড়া মান যথেষ্ট ভাল। এটি সেই ক্ষেত্রে একটি যেখানে আপনার আসল জিনিসটির দিকে নজর দেওয়া উচিত।
মার্ক রান্সম

3
@ মার্কারান্সম স্ট্যান্ডার্ড :: ডেক এবং স্ট্যান্ড :: ভেক্টরের মানের বর্তমান উত্স প্রশ্নের অনুরূপ, সুতরাং চূড়ান্ত সংস্করণটি পৃথক হওয়ার সম্ভাবনা খুব কম।
আন্তন সাভিন 20

3
N4141 এর N1540 এর মতো একই শব্দ রয়েছে।
ব্রায়ান

উত্তর:


9

লেনেকা সভায় সমস্যাটি প্রস্তাবিত রেজোলিউশন সহ তাত্ক্ষণিক স্ট্যাটাস পেয়েছে :

এই শব্দটি N4296 এর সাথে সম্পর্কিত।

23.3.3.4 [deque.modifiers] / 5 এ পরিবর্তন করুন:

-5- জটিলতা : বিনাশকারী কল সংখ্যা এরT মুছে ফেলা উপাদানের সংখ্যা হিসাবে একই, কিন্তু নিয়োগ অপারেটরের কলের সংখ্যা এরT মুছে ফেলা উপাদান এবং সামনে উপাদানের সংখ্যা কম ছাড়া আর কিছুই নয় মোছা উপাদানগুলির পরে উপাদানগুলির সংখ্যা।

২৩.৩..6.৫ [ভেক্টর.মডিফায়ার]] / ৪ এ পরিবর্তন করুন:

-4- জটিলতা : এর ডেস্ট্রাক্টরকে Tমুছে যাওয়া উপাদানগুলির সংখ্যার সমান গুণ সংখ্যার বলা হয়, তবে মুভ অ্যাসাইনমেন্ট অপারেটরটিকে Tভেক্টরের মোছা উপাদানগুলির পরে সংখ্যার সমান গুণ সংখ্যার বলা হয়।

এটি হ'ল, যদি প্রস্তাবটি গৃহীত হয় তবে মুভ অ্যাসাইনমেন্টের কোনও বিশেষ উল্লেখ থাকবে না std::vector::eraseএবং এর জন্য শব্দটিও std::deque::eraseকিছুটা স্পষ্ট করা হবে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.