সি ++ তে কোনও ভেক্টরের মাধ্যমে পুনরাবৃত্তি করার সঠিক উপায় কী?
এই দুটি কোড টুকরা বিবেচনা করুন, এটি একটি ভাল কাজ করে:
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 বছরেরও বেশি সময় ধরে মন্তব্যের এই ঝলকানি প্রবাহে এখনও সমস্ত কিছু আবরণ করেছি?