এটির নিজের পুনরাবৃত্তকারী ব্যবহার করে কোনও ধারক নির্ধারণ করা কি নিরাপদ?


10

উদাহরণ হিসাবে:

string s = "123";
s.assign(find(s.begin(),s.end(),'2'), s.end());

উপরের কোডটির আচরণ কি সংজ্ঞায়িত হয়েছে? বা এটি অপরিবর্তিত আচরণের দিকে পরিচালিত করে?

উত্তর:


5

হ্যাঁ. নির্ধারিত এই সংস্করণ হিসাবে সংজ্ঞায়িত করা হয়

template<class InputIterator>
  constexpr basic_string& assign(InputIterator first, InputIterator last);

সীমাবদ্ধতা : ইনপুটআইট্রেটর এমন একটি প্রকার যা ইনপুট পুনরাবৃত্তকারী হিসাবে যোগ্যতা অর্জন করে।

প্রভাবসমূহ : এর সমান: রিটার্ন অ্যাসাইন (বেসিক_স্ট্রিং (প্রথম, শেষ, get_allocator ()));

যা পরিবর্তনগুলি হওয়ার আগে একটি অস্থায়ী গণনা দেখায়।


"সমতুল্য" এর অর্থ এই নয় যে একটি আসল অস্থায়ী তৈরি করতে হবে। যদিও শব্দার্থকগুলি অবশ্যই একই রকম হবে। এবং যেহেতু দেখানো সংস্করণটি স্ব-নিয়োগের বিরুদ্ধে সুরক্ষিত তাই প্রকৃত বাস্তবায়নটিও অবশ্যই হওয়া উচিত।
— MSalters

@MSalters। সম্মত হয়। তারপরে আমি মন্তব্য করার ইচ্ছা করেছিলাম তখন বরাদ্দর ব্যবহারের পরিমাণ কীভাবে বাড়ানো যায় তা নির্ধারণের চেষ্টা করতে গিয়ে হারিয়ে গেলাম।
— এপ্রোগ্রামার

নোট করুন যে এটি স্ট্রিংয়ের সাথে নির্দিষ্ট specific ভেক্টর বলুন, এটি ইউবি হবে।
— টিসি

@ টিটিসি, আপনি কি স্ট্যান্ডার্ডটি উদ্ধৃত করতে পারবেন?
— অ্যাডলার

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