সি ++ তে কোনও ভেক্টরের মাধ্যমে পুনরাবৃত্তি করার সঠিক উপায় কী?
এই দুটি কোড টুকরা বিবেচনা করুন, এটি একটি ভাল কাজ করে:
for (unsigned i=0; i < polygon.size(); i++) {
sum += polygon[i];
}
এবং এটি:
for (int i=0; i < polygon.size(); i++) {
sum += polygon[i];
}
যা উত্পন্ন করে warning: comparison between signed and unsigned integer expressions।
আমি সি ++ এর বিশ্বে নতুন, সুতরাং unsignedভেরিয়েবলটি আমার কাছে কিছুটা ভীতিজনক মনে হয় এবং আমি জানি যে unsignedভেরিয়েবলগুলি সঠিকভাবে ব্যবহার না করা বিপজ্জনক হতে পারে, তাই - এটি কি সঠিক?
.size()টাইপ unsignedওরফে নয় unsigned int। এটা টাইপ std::size_t।
std::size_tএকটি _ বাস্তবায়ন-সংজ্ঞায়িত টাইপইফ। স্ট্যান্ডার্ড দেখুন। আপনার বর্তমান বাস্তবায়নের std::size_tসমতুল্য হতে পারে unsigned, তবে এটি প্রাসঙ্গিক নয়। এটি ভান করার ফলে নন-পোর্টেবল কোড এবং অপরিজ্ঞাত আচরণ হতে পারে।
std::size_tঅনুশীলনে রয়েছে আপনি কি মনে করেন যে আমরা 6 বছরেরও বেশি সময় ধরে মন্তব্যের এই ঝলকানি প্রবাহে এখনও সমস্ত কিছু আবরণ করেছি?