vector<bool>
Kelas
Kelas vector<bool>
adalah spesialisasi parsial untuk vector
elemen jenis bool
. Ini memiliki alokator untuk jenis yang mendasar yang digunakan oleh spesialisasi, yang menyediakan pengoptimalan ruang dengan menyimpan satu bool
nilai per bit.
Sintaks
template <class Allocator = allocator<bool>>
class vector<bool, Allocator>
Keterangan
Spesialisasi templat kelas ini berulah seperti vector
, kecuali untuk perbedaan yang dijelaskan dalam artikel ini.
Operasi yang menangani jenis sesuai dengan bool
nilai dalam penyimpanan kontainer. allocator_traits::construct
tidak digunakan untuk membangun nilai-nilai ini.
Typedefs
Nama jenis | Deskripsi |
---|---|
const_pointer |
Typedef ke yang const_iterator dapat berfungsi sebagai penunjuk konstan ke elemen Boolean dari vector<bool> . |
const_reference |
Typedef untuk bool . Setelah inisialisasi, ini tidak mengamati pembaruan ke nilai asli. |
pointer |
Typedef ke yang iterator dapat berfungsi sebagai penunjuk ke elemen Boolean dari vector<bool> . |
Fungsi anggota
Fungsi anggota | Deskripsi |
---|---|
flip |
Membalikkan semua bit dalam vector<bool> . |
swap |
Menukar elemen dua vector<bool> s. |
operator[] |
Mengembalikan referensi yang disimulasikan ke elemen pada vector<bool> posisi tertentu. |
at |
Fungsinya sama dengan fungsi ::at yang tidak dispesialisasikan vector , kecuali menggunakan kelas vector<bool>::reference proksi . operator[] Lihat juga . |
front |
Fungsinya sama dengan fungsi ::front yang tidak dispesialisasikan vector , kecuali menggunakan kelas vector<bool>::reference proksi . operator[] Lihat juga . |
back |
Fungsinya sama dengan fungsi ::back yang tidak dispesialisasikan vector , kecuali menggunakan kelas vector<bool>::reference proksi . operator[] Lihat juga . |
Kelas Proksi
Nama | Deskripsi |
---|---|
vector<bool>::reference Kelas |
Kelas yang bertindak sebagai proksi untuk mensimulasikan bool& perilaku, dan yang objeknya dapat memberikan referensi ke elemen (bit tunggal) dalam vector<bool> objek. |
Persyaratan
Header: <vector>
kumpulan nama XML: std
vector<bool>::const_pointer
Jenis yang menjelaskan objek yang dapat berfungsi sebagai penunjuk konstan ke elemen Boolean dari urutan yang dimuat oleh vector<bool>
objek.
typedef const_iterator const_pointer;
vector<bool>::const_reference
Jenis yang menjelaskan objek yang dapat berfungsi sebagai referensi konstan ke elemen Boolean dari urutan yang terkandung oleh vector<bool>
objek.
typedef bool const_reference;
Keterangan
Untuk informasi selengkapnya dan contoh kode, lihat vector<bool>::reference::operator=
.
vector<bool>::flip
Membalikkan semua bit dalam .vector<bool>
void flip();
Contoh
// vector_bool_flip.cpp
// compile with: /EHsc /W4
#include <vector>
#include <iostream>
int main()
{
using namespace std;
cout << boolalpha; // format output for subsequent code
vector<bool> vb = { true, false, false, true, true };
cout << "The vector is:" << endl << " ";
for (const auto& b : vb) {
cout << b << " ";
}
cout << endl;
vb.flip();
cout << "The flipped vector is:" << endl << " ";
for (const auto& b : vb) {
cout << b << " ";
}
cout << endl;
}
vector<bool>::operator[]
Mengembalikan referensi yang disimulasikan ke elemen pada vector<bool>
posisi tertentu.
vector<bool>::reference operator[](size_type Pos);
vector&<bool&>::const_reference operator[](size_type Pos) const;
Parameter
Pos
Posisi vector<bool>
elemen .
Tampilkan Nilai
Objek vector<bool>::reference
atau vector<bool>::const_reference
yang berisi nilai elemen terindeks.
Jika posisi yang ditentukan lebih besar dari atau sama dengan ukuran kontainer, hasilnya tidak ditentukan.
Keterangan
Jika Anda mengkompilasi dengan _ITERATOR_DEBUG_LEVEL
set, kesalahan run-time terjadi jika Anda mencoba mengakses elemen di luar batas vektor. Untuk informasi selengkapnya, lihat Iterator yang Diperiksa.
Contoh
Contoh kode ini menunjukkan penggunaan vector<bool>::operator[]
yang benar dan dua kesalahan pengodean umum, yang dikomentari. Kesalahan ini menyebabkan kesalahan karena alamat vector<bool>::reference
objek yang vector<bool>::operator[]
mengembalikan tidak dapat diambil.
// cl.exe /EHsc /nologo /W4 /MTd
#include <vector>
#include <iostream>
int main()
{
using namespace std;
cout << boolalpha;
vector<bool> vb;
vb.push_back(true);
vb.push_back(false);
// bool* pb = &vb[1]; // conversion error - do not use
// bool& refb = vb[1]; // conversion error - do not use
bool hold = vb[1];
cout << "The second element of vb is " << vb[1] << endl;
cout << "The held value from the second element of vb is " << hold << endl;
// Note this doesn't modify hold.
vb[1] = true;
cout << "The second element of vb is " << vb[1] << endl;
cout << "The held value from the second element of vb is " << hold << endl;
}
The second element of vb is false
The held value from the second element of vb is false
The second element of vb is true
The held value from the second element of vb is false
vector<bool>::pointer
Jenis yang menjelaskan objek yang dapat berfungsi sebagai penunjuk ke elemen Boolean dari urutan yang terkandung oleh vector<bool>
objek.
typedef iterator pointer;
vector<bool>::reference
Kelas
Kelas vector<bool>::reference
adalah kelas proksi yang disediakan oleh vector<bool>
Kelas untuk mensimulasikan bool&
.
Keterangan
Referensi yang disimulasikan diperlukan karena C++ tidak secara asli mengizinkan referensi langsung ke bit. vector<bool>
hanya menggunakan satu bit per elemen, yang dapat dirujuk dengan menggunakan kelas proksi ini. Namun, simulasi referensi tidak selesai karena penugasan tertentu tidak valid. Misalnya, karena alamat vector<bool>::reference
objek tidak dapat diambil, kode berikut yang menggunakan vector<bool>::operator[]
tidak benar:
vector<bool> vb;
//...
bool* pb = &vb[1]; // conversion error - do not use
bool& refb = vb[1]; // conversion error - do not use
vector<bool>::reference::flip
Membalikkan nilai Boolean dari elemen yang direferensikan vector<bool>
.
void flip();
Contoh
// vector_bool_ref_flip.cpp
// compile with: /EHsc /W4
#include <vector>
#include <iostream>
int main()
{
using namespace std;
cout << boolalpha;
vector<bool> vb = { true, false, false, true, true };
cout << "The vector is: " << endl << " ";
for (const auto& b : vb) {
cout << b << " ";
}
cout << endl;
vector<bool>::reference vbref = vb.front();
vbref.flip();
cout << "The vector with first element flipped is: " << endl << " ";
for (const auto& b : vb) {
cout << b << " ";
}
cout << endl;
}
The vector is:
true false false true true
The vector with first element flipped is:
false false false true true
vector<bool>::reference::operator bool
Menyediakan konversi implisit dari vector<bool>::reference
ke bool
.
operator bool() const;
Tampilkan Nilai
Nilai Boolean dari elemen vector<bool>
objek.
Keterangan
Objek vector<bool>
tidak dapat dimodifikasi oleh operator ini.
vector<bool>::reference::operator=
Menetapkan nilai Boolean ke sedikit, atau nilai yang dipegang oleh elemen yang direferensikan ke sedikit.
reference& operator=(const reference& Right);
reference& operator=(bool Val);
Parameter
Right
Referensi elemen yang nilainya akan ditetapkan ke bit.
Val
Nilai Boolean yang akan ditetapkan ke bit.
Contoh
// vector_bool_ref_op_assign.cpp
// compile with: /EHsc
#include <vector>
#include <iostream>
#include <string>
using namespace std;
template <typename C> void print(const string& s, const C& c) {
cout << s;
for (const auto& e : c) {
cout << e << " ";
}
cout << endl;
}
int main()
{
cout << boolalpha;
vector<bool> vb = { true, false, false, true, true };
print("The vector is: ", vb);
// Invoke vector<bool>::reference::operator=()
vector<bool>::reference refelem1 = vb[0];
vector<bool>::reference refelem2 = vb[1];
vector<bool>::reference refelem3 = vb[2];
bool b1 = refelem1;
bool b2 = refelem2;
bool b3 = refelem3;
cout << "The original value of the 1st element stored in a bool: " << b1 << endl;
cout << "The original value of the 2nd element stored in a bool: " << b2 << endl;
cout << "The original value of the 3rd element stored in a bool: " << b3 << endl;
cout << endl;
refelem2 = refelem1;
print("The vector after assigning refelem1 to refelem2 is now: ", vb);
refelem3 = true;
print("The vector after assigning false to refelem1 is now: ", vb);
// The initial values are still stored in the bool variables and remained unchanged
cout << "The original value of the 1st element still stored in a bool: " << b1 << endl;
cout << "The original value of the 2nd element still stored in a bool: " << b2 << endl;
cout << "The original value of the 3rd element still stored in a bool: " << b3 << endl;
cout << endl;
}
The vector is: true false false true true
The original value of the 1st element stored in a bool: true
The original value of the 2nd element stored in a bool: false
The original value of the 3rd element stored in a bool: false
The vector after assigning refelem1 to refelem2 is now: true true false true true
The vector after assigning false to refelem1 is now: true true true true true
The original value of the 1st element still stored in a bool: true
The original value of the 2nd element still stored in a bool: false
The original value of the 3rd element still stored in a bool: false
vector<bool>::swap
Fungsi anggota statis yang bertukar dua elemen vektor Boolean ( vector<bool>
) dengan menggunakan kelas vector<bool>::reference
proksi .
static void swap(
reference Left,
reference Right);
Parameter
Left
Elemen yang akan ditukar dengan Right
elemen .
Right
Elemen yang akan ditukar dengan Left
elemen .
Keterangan
Kelebihan beban ini mendukung persyaratan proksi khusus dari vector<bool>
. vector
::swap memiliki fungsionalitas yang sama dengan kelebihan beban argumen tunggal .vector<bool>::swap()
Lihat juga
Keamanan utas di Pustaka Standar C++
Referensi pustaka standar C++