Hướng dẫn dùng vector insert trong PHP

C++ là ngôn ngữ mạnh mẽ nhờ tính linh hoạt, gần gũi với ngôn ngữ máy. Bên cạnh đó còn có khả năng lập trình dựa trên mẫu có sẵn [template]. Sức mạnh của C++ nằm ở STL [Standard Template Library] – một thư viện template dành cho C++ tổng hợp các cấu trúc dữ liệu cũng như giải thuật và các vector trong C++ được xây dựng một cách tổng quát cho nhiều trường hợp.

Bộ thư viện này thực hiện toàn bộ các hoạt động ra vào của dữ liệu [iostream], quản lý mảng [vector] và hầu hết các tính năng của các cấu trúc dữ liệu cơ bản như [stack, queue, map, set…]. Ngoài ra, STL còn bao gồm các thuật toán cơ bản: tính tổng, tìm min, max, sắp xếp [với đa dạng thuật toán sắp xếp], thay thế các phần tử, tìm kiếm [tìm kiếm bình thường và tìm kiếm dười dạng nhị phân]. Toàn bộ những tính năng trên đều được cung cấp dưới dạng template nên việc sử dụng chúng cực kỳ tiện lợi và phù hợp với nhiều tình huống. Nhờ vậy, STL làm cho ngôn ngữ C++ trở nên “xịn xò” hơn.

Nhưng nói đến STL thì sẽ là bài tập rất dài nên hôm nay mình sẽ chỉ đề cập đến vector thôi.

Vậy Vector trong C++ là gì?

Không giống như array [mảng], chỉ một số giá trị nhất định có thể được lưu trữ dưới một tên biến duy nhất. Vector trong C++ giống dynamic array [mảng động] nhưng có khả năng tự động thay đổi kích thước khi một phần tử được chèn hoặc xóa tùy thuộc vào nhu cầu của tác vụ được thực thi, với việc lưu trữ của chúng sẽ được vùng chứa tự động xử lý. Các phần tử vector được đặt trong contiguous storage [bộ nhớ liền kề] để chúng có thể được truy cập và duyệt qua bằng cách sử dụng iterator.

Vì sao nên dùng Vector

Nếu bạn đã phát chán việc quản lý mảng động qua con trỏ trong C++ hay chán phải tạo mảng mới, copy các phần tử qua mảng mới, rồi lại xóa mảng cũ mỗi khi bạn muốn resize kích thước mảng động trong C++. Thật thừa thải, tốn thời gian và đó là thời điểm ta nhận ra C++ còn có vector.

Một số điểm nổi trội của Vector

– Bạn không cần phải khai báo kích thước của mảng ví dụ int A[100]…, vì vector có thể tự động nâng kích thước lên.

– Nếu bạn thêm 1 phần tử vào vector đã đầy rồi, thì nó sẽ tự động tăng kích thước của nó lên để dành chỗ cho giá trị mới này.

– Vector còn giúp cho bạn biết số lượng các phần tử mà bạn đang lưu trong đó.

– Dùng số phần tử âm vẫn được trong vector ví dụ A[-6], A[-9], rất tiện trong việc cài đặt các giải thuật.

Giới thiệu literals và operators”]

Vector có thứ tự trong C++ không?

Không có vector nào không được sắp xếp trong C++. Các phần tử vector được đặt trong bộ nhớ liền kề để chúng có thể được truy cập và di chuyển qua các iterator. Trong vector, dữ liệu được chèn vào cuối. Việc chèn một phần tử vào cuối sẽ mất thời gian chênh lệch, vì đôi khi có thể cần mở rộng vector. Việc xóa phần tử cuối cùng chỉ mất thời gian không đổi vì không xảy ra thay đổi kích thước. Chèn và xóa ở đầu hoặc giữa vector là tuyến tính theo thời gian.

Các vector được lưu trữ trong C++ như thế nào?

Để tạo một vector, bạn cần thực hiện theo cú pháp dưới đây:

Cú pháp:

#include 
//...
vector variable_name;

Ví dụ:

#include 
int main[]
{
    std::vector my_vector;
}

Vậy là chúng ta đã có một vector với mỗi phần tử có kiểu dữ liệu [object_type] là int. Sau đó bạn có thể gắn giá trị cho vector như này:

vector my_vector = {1,2,3,4,5}

Hoặc bạn cũng có thể tạo một vector rồi gán giá trị của một vector khác cho nó bằng cách:

vector my_vector = {1,2,3,4,5};
vector your_vector = my_vector;

Cơ chế ngăn chặn rò rỉ bộ nhớ của Vector

Khi một biến vector rời khỏi phạm vi đoạn code mà chương trình đang chạy, nó sẽ tự động giải phóng những phần bộ nhớ mà nó kiểm soát [nếu cần]. Điều này không chỉ tiện dụng [vì bạn không cần tự tay giải phóng bộ nhớ], mà nó còn giúp ngăn ngừa lỗi rò rỉ bộ nhớ [memory leaks].

Xem hàm dưới đây:

void doSomething[bool earlyExit]
{
	int *array = new int[3]{ 1, 3, 2 };

	if [earlyExit] 
		return;

	delete[] array; 
}

Nếu biến earlyExit được gán là true, mảng array sẽ không bao giờ được giải phóng, và bộ nhớ sẽ bị rò rỉ.

Tuy nhiên, nếu biến array là một vector, điều này sẽ không xảy ra, bởi vì bộ nhớ sẽ được giải phóng ngay sau khi biến array nằm ngoài phạm vi đoạn code mà chương trình đang chạy [bất kể hàm có bị thoát ra sớm hay không]. Điều này làm cho vector an toàn hơn nhiều so với việc bạn phải tự chú ý đến việc giải phóng bộ nhớ.

Vector tự ghi nhớ độ dài của mình

Không giống như mảng động được tích hợp sẵn của C++, cái mà không biết được độ dài của mảng mà nó đang trỏ tới là bao nhiêu, std::vectors tự theo dõi độ dài của chính nó. Chúng ta có thể lấy được độ dài của vector thông qua hàm size[]:

#include 
#include 

void printLength[const std::vector& array]
{
    std::cout 

Chủ Đề