Rumah > pembangunan bahagian belakang > C++ > Mengapa `vector.size() - 1` Tidak Mengembalikan -1 untuk Vektor Kosong dalam C ?

Mengapa `vector.size() - 1` Tidak Mengembalikan -1 untuk Vektor Kosong dalam C ?

Barbara Streisand
Lepaskan: 2024-12-01 09:52:14
asal
983 orang telah melayarinya

Why Doesn't `vector.size() - 1` Return -1 for an Empty Vector in C  ?

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
}
Salin selepas log masuk

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!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan