আমার প্রশ্নটি সহজ: এসটিডি :: ভেক্টর উপাদানগুলি সংলগ্ন হওয়ার গ্যারান্টিযুক্ত? ক্রম শব্দে, আমি সিডি-অ্যারে হিসাবে স্টাড :: ভেক্টরের প্রথম উপাদানটির পয়েন্টারটি ব্যবহার করতে পারি?
যদি আমার স্মৃতি আমাকে ভালভাবে পরিবেশন করে, সি ++ মান এমন গ্যারান্টি দেয় না। তবে, স্টাড :: ভেক্টরের প্রয়োজনীয়তাগুলি এমন ছিল যে উপাদানগুলি সংঞ্জল না হলে তাদের সাথে মিলিত হওয়া কার্যত অসম্ভব ছিল।
কেউ কি এই ব্যাখ্যা করতে পারেন?
উদাহরণ:
std::vector<int> values;
// ... fill up values
if( !values.empty() )
{
int *array = &values[0];
for( int i = 0; i < values.size(); ++i )
{
int v = array[i];
// do something with 'v'
}
}
values
পরিবর্তিত কলগুলি , বিশেষত এটির আকার পরিবর্তন করে (উদাঃ push_back()
), অন্তর্নিহিত ভেক্টরটির পুনর্নির্দেশের অনুরোধ জানাতে পারে যা অনুলিপি করা পয়েন্টারটিকে অকার্যকর করে দেয় array
। এটি ভেক্টর ব্যবহার করার পিছনে একই নীতিটি :: ভেক্টরটিতে পয়েন্টারের পরিবর্তে পুনরাবৃত্তকারী। :)
values
এইif
ব্লকের ভিতরে পরিবর্তন করেন তবে আপনি সমস্যায় পড়েছেন । আমি আপনার প্রশ্নের উত্তর জানি না, যদিও আমি কেবল একটি মন্তব্য করছি। :)