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


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.