Memahami Saiz Vektor dalam C
Dalam C , struktur data vektor ialah tatasusunan dinamik yang boleh melaraskan saiznya secara automatik apabila elemen ditambah atau dikeluarkan. Walau bagaimanapun, apabila bekerja dengan vektor, adalah penting untuk memahami gelagat saiz() apabila vektor kosong.
Mengapa saiz() - 1 bukan -1 untuk Vektor Kosong
Pertimbangkan coretan kod yang disediakan:
#include <vector> #include <iostream> using namespace std; int main() { vector<int> value; cout << value.size() << endl; // output 0 cout << value.size() - 1 << endl; // output 18446744073709551615 }
Output pertama, 0, mewakili nombor dengan betul unsur dalam vektor kosong. Walau bagaimanapun, output kedua, yang menolak 1 daripada saiz, adalah tidak dijangka kerana ia mengembalikan integer besar yang tidak ditandatangani dan bukannya -1.
Sebab di sebalik tingkah laku ini terletak pada jenis size_t yang digunakan dalam vector::size (). size_t ialah jenis integer tidak bertanda yang direka untuk menyimpan bilangan elemen dalam vektor. Integer yang tidak ditandatangani tidak boleh mewakili nombor negatif, jadi sebarang percubaan untuk menolak 1 daripada 0 akan menghasilkan nilai integer yang tidak ditandatangani yang besar.
Kesimpulan
Adalah penting untuk diingat bahawa size_t ialah jenis tidak bertanda dan tidak boleh mewakili nombor negatif. Apabila bekerja dengan vektor, sentiasa mengambil kira potensi nilai integer tidak bertanda yang besar apabila menolak 1 daripada saiz vektor kosong.
Atas ialah kandungan terperinci Mengapa `vector.size() - 1` Tidak Mengembalikan -1 untuk Vektor Kosong dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!