Voxia OS v0.0.1
Hobby Project Operating System Targeting x86-64
Loading...
Searching...
No Matches
Vector< T > Class Template Reference

#include <vector.hpp>

Public Member Functions

 Vector ()
 
 ~Vector ()
 
 Vector (const Vector &)=delete
 
Vectoroperator= (const Vector &)=delete
 
 Vector (Vector &&other) noexcept
 Move constructor.
 
Vectoroperator= (Vector &&other) noexcept
 Move assignment.
 
T & operator[] (size_t index)
 Akses elemen by index (tanpa bounds check).
 
const T & operator[] (size_t index) const
 Akses elemen by index — const overload.
 
T & front ()
 Elemen pertama.
 
T & back ()
 Elemen terakhir.
 
T * data ()
 Pointer raw ke data internal.
 
const T * data () const
 Pointer raw ke data internal — const.
 
size_t size () const
 Jumlah elemen aktif.
 
size_t capacity () const
 Kapasitas buffer saat ini.
 
bool empty () const
 True jika tidak ada elemen.
 
void push_back (const T &val)
 Tambah elemen ke akhir (copy).
 
void push_back (T &&val)
 Tambah elemen ke akhir (move).
 
T * pop_back ()
 Hapus elemen terakhir dan kembalikan nilainya.
 
void clear ()
 Reset ukuran ke 0 tanpa membebaskan memori.
 
void reserve (size_t new_cap)
 Pastikan kapasitas minimal new_cap elemen.
 
T * begin ()
 
T * end ()
 
const T * begin () const
 
const T * end () const
 

Private Member Functions

void expand_capacity ()
 Dobel kapasitas — menggantikan macro vector_expand_capacity().
 
void destroy ()
 Bebaskan memori — menggantikan macro vector_destroy().
 

Private Attributes

T * data_
 
size_t size_
 
size_t capacity_
 

Detailed Description

template<typename T>
class Vector< T >

Definition at line 10 of file vector.hpp.

Constructor & Destructor Documentation

◆ Vector() [1/3]

template<typename T>
Vector< T >::Vector ( )
inline

Definition at line 12 of file vector.hpp.

References capacity_, data_, nullptr, reserve(), size_, and VECTOR_MINIMUM_ITEM.

Referenced by operator=(), operator=(), Vector(), and Vector().

◆ ~Vector()

template<typename T>
Vector< T >::~Vector ( )
inline

Definition at line 16 of file vector.hpp.

References destroy().

◆ Vector() [2/3]

template<typename T>
Vector< T >::Vector ( const Vector< T > & )
delete

References Vector().

◆ Vector() [3/3]

template<typename T>
Vector< T >::Vector ( Vector< T > && other)
inlinenoexcept

Move constructor.

Definition at line 27 of file vector.hpp.

References Vector().

Member Function Documentation

◆ back()

template<typename T>
T & Vector< T >::back ( )
inline

Elemen terakhir.

Definition at line 67 of file vector.hpp.

References data_, and size_.

◆ begin() [1/2]

template<typename T>
T * Vector< T >::begin ( )
inline

Definition at line 157 of file vector.hpp.

References data_.

◆ begin() [2/2]

template<typename T>
const T * Vector< T >::begin ( ) const
inline

Definition at line 164 of file vector.hpp.

References data_.

◆ capacity()

template<typename T>
size_t Vector< T >::capacity ( ) const
inline

Kapasitas buffer saat ini.

Definition at line 87 of file vector.hpp.

References capacity_.

◆ clear()

template<typename T>
void Vector< T >::clear ( )
inline

Reset ukuran ke 0 tanpa membebaskan memori.

Menggantikan macro vector_clear().

Definition at line 134 of file vector.hpp.

References size_.

◆ data() [1/2]

template<typename T>
T * Vector< T >::data ( )
inline

Pointer raw ke data internal.

Definition at line 72 of file vector.hpp.

References data_.

◆ data() [2/2]

template<typename T>
const T * Vector< T >::data ( ) const
inline

Pointer raw ke data internal — const.

Definition at line 77 of file vector.hpp.

References data_.

◆ destroy()

template<typename T>
void Vector< T >::destroy ( )
inlineprivate

Bebaskan memori — menggantikan macro vector_destroy().

Definition at line 187 of file vector.hpp.

References capacity_, data_, kfree(), and size_.

Referenced by operator=(), and ~Vector().

◆ empty()

template<typename T>
bool Vector< T >::empty ( ) const
inline

True jika tidak ada elemen.

Definition at line 92 of file vector.hpp.

References size_.

◆ end() [1/2]

template<typename T>
T * Vector< T >::end ( )
inline

Definition at line 160 of file vector.hpp.

References data_, and size_.

◆ end() [2/2]

template<typename T>
const T * Vector< T >::end ( ) const
inline

Definition at line 167 of file vector.hpp.

References data_, and size_.

◆ expand_capacity()

template<typename T>
void Vector< T >::expand_capacity ( )
inlineprivate

Dobel kapasitas — menggantikan macro vector_expand_capacity().

Definition at line 179 of file vector.hpp.

References capacity_, and reserve().

Referenced by push_back(), and push_back().

◆ front()

template<typename T>
T & Vector< T >::front ( )
inline

Elemen pertama.

Definition at line 62 of file vector.hpp.

References data_.

◆ operator=() [1/2]

template<typename T>
Vector & Vector< T >::operator= ( const Vector< T > & )
delete

References Vector().

◆ operator=() [2/2]

template<typename T>
Vector & Vector< T >::operator= ( Vector< T > && other)
inlinenoexcept

Move assignment.

Definition at line 38 of file vector.hpp.

References capacity_, data_, destroy(), size_, and Vector().

◆ operator[]() [1/2]

template<typename T>
T & Vector< T >::operator[] ( size_t index)
inline

Akses elemen by index (tanpa bounds check).

Definition at line 52 of file vector.hpp.

References data_.

◆ operator[]() [2/2]

template<typename T>
const T & Vector< T >::operator[] ( size_t index) const
inline

Akses elemen by index — const overload.

Definition at line 57 of file vector.hpp.

References data_.

◆ pop_back()

template<typename T>
T * Vector< T >::pop_back ( )
inline

Hapus elemen terakhir dan kembalikan nilainya.

Menggantikan macro vector_pop_back() — versi ini TIDAK menggunakan return di dalam macro (yang berbahaya).

Returns
Pointer ke elemen yang dihapus, atau nullptr jika kosong. Perhatian: pointer ini menunjuk ke elemen di buffer internal; nilainya valid sampai push_back / destroy berikutnya.

Definition at line 124 of file vector.hpp.

References data_, and size_.

◆ push_back() [1/2]

template<typename T>
void Vector< T >::push_back ( const T & val)
inline

Tambah elemen ke akhir (copy).

Menggantikan macro vector_push_back().

Definition at line 100 of file vector.hpp.

References capacity_, data_, expand_capacity(), and size_.

◆ push_back() [2/2]

template<typename T>
void Vector< T >::push_back ( T && val)
inline

Tambah elemen ke akhir (move).

Definition at line 109 of file vector.hpp.

References capacity_, data_, expand_capacity(), and size_.

◆ reserve()

template<typename T>
void Vector< T >::reserve ( size_t new_cap)
inline

Pastikan kapasitas minimal new_cap elemen.

Menggantikan vector_expand_capacity() dengan kontrol eksplisit.

Definition at line 142 of file vector.hpp.

References capacity_, data_, kalloc(), kfree(), and memcopy().

Referenced by expand_capacity(), and Vector().

◆ size()

template<typename T>
size_t Vector< T >::size ( ) const
inline

Jumlah elemen aktif.

Definition at line 82 of file vector.hpp.

References size_.

Field Documentation

◆ capacity_

template<typename T>
size_t Vector< T >::capacity_
private

◆ data_

template<typename T>
T* Vector< T >::data_
private

◆ size_

template<typename T>
size_t Vector< T >::size_
private

Definition at line 173 of file vector.hpp.

Referenced by back(), clear(), destroy(), empty(), end(), end(), operator=(), pop_back(), push_back(), push_back(), size(), and Vector().


The documentation for this class was generated from the following file: