STARTING
CONTROL STATEMENT
FUNCTION
ARRAY & POINTER
OOP
STL
ITERATORS
OTHER FEATURES
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
MỚI CẬP NHẬT

[STL] Các hàm thường dùng của lớp Vector trong C++

Trong lập trình C++, std::vector là một trong những cấu trúc dữ liệu quan trọng nhất trong thư viện tiêu chuẩn (STL). Nó cung cấp một mảng động có khả năng mở rộng tự động, giúp quản lý và xử lý dữ liệu một cách linh hoạt. Điều này làm cho vector trở thành một công cụ mạnh mẽ được sử dụng rộng rãi trong nhiều ứng dụng.

test php

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

Trong bài viết này, mình sẽ tìm hiểu các hàm thông dụng của lớp vector trong C++. Từ việc thêm và xóa phần tử đến truy xuất và sắp xếp, chúng ta sẽ tìm hiểu về cách sử dụng các hàm này để quản lý và xử lý dữ liệu một cách hiệu quả. Hãy cùng nhau đi vào chi tiết để hiểu rõ hơn về cách làm việc với vector trong C++ và những ứng dụng thực tiễn của nó.

Screenshot 202024 03 28 20102922 png

Vector trong C++ là gì và vai trò của nó trong STL?

Trong C++, vector là một loại dữ liệu được cung cấp sẵn trong thư viện chuẩn (STL - Standard Template Library). Vector là một cấu trúc dữ liệu mảng động, cho phép lưu trữ một tập hợp các phần tử có cùng kiểu dữ liệu một cách tuần tự. Một trong những đặc điểm nổi bật của vector là khả năng thay đổi kích thước của nó một cách linh hoạt, tức là có thể thêm hoặc xóa phần tử một cách dễ dàng mà không cần phải quan tâm đến việc quản lý bộ nhớ.

Vai trò của vector trong STL là cung cấp một cấu trúc dữ liệu linh hoạt và hiệu quả để lưu trữ dữ liệu trong các ứng dụng C++. Nó được sử dụng rộng rãi trong nhiều tình huống khác nhau, bao gồm:

Bài viết này được đăng tại [free tuts .net]

  • Lưu trữ và quản lý dữ liệu: Vector được sử dụng để lưu trữ các phần tử của cùng một kiểu dữ liệu và cung cấp các phương thức để thêm, xóa, truy xuất và sắp xếp các phần tử này.

  • Tích hợp với các thuật toán: Vector cung cấp các phương thức để thực hiện các thao tác cơ bản như sắp xếp, tìm kiếm, đảo ngược, thay đổi nội dung và nhiều hơn nữa. Các thuật toán này có thể được áp dụng trực tiếp trên vector một cách thuận tiện.

  • Thao tác với dữ liệu tuần tự: Do vector lưu trữ dữ liệu một cách tuần tự trong bộ nhớ, nên nó rất thích hợp cho việc thực hiện các thao tác trên dữ liệu tuần tự như danh sách, hàng đợi, ngăn xếp và nhiều cấu trúc dữ liệu khác.

Tóm lại, vector là một thành phần quan trọng trong STL của C++, cung cấp một cách linh hoạt và tiện lợi để làm việc với dữ liệu tuần tự trong các ứng dụng lập trình.

Các hàm thường dùng của lớp Vector trong C++

Thêm và xóa phần tử

push_back()

Thêm một phần tử vào cuối vector.

Ví dụ:

std::vector<int> numbers;
numbers.push_back(10);

pop_back()

Xóa phần tử cuối cùng khỏi vector.

Ví dụ:

std::vector<int> numbers = {1, 2, 3};
numbers.pop_back();

insert()

Chèn một phần tử vào vị trí bất kỳ trong vector.

Ví dụ:

std::vector<int> numbers = {1, 3, 4};
numbers.insert(numbers.begin() + 1, 2); // Chèn số 2 vào vị trí thứ 2

erase()

Xóa phần tử tại một vị trí hoặc một dải phần tử trong vector.

Ví dụ:

std::vector<int> numbers = {1, 2, 3, 4, 5};
numbers.erase(numbers.begin() + 2); // Xóa phần tử thứ 3

Truy xuất phần tử

at()

Truy cập phần tử tại một vị trí cụ thể trong vector và kiểm tra giới hạn của vector.

Ví dụ:

std::vector<int> numbers = {1, 2, 3};
int value = numbers.at(1); // Lấy giá trị của phần tử thứ 2

[]

Truy cập phần tử tại một vị trí cụ thể trong vector. Không kiểm tra giới hạn của vector, có thể gây lỗi nếu vị trí truy cập vượt quá kích thước của vector.

Ví dụ:

std::vector<int> numbers = {1, 2, 3};
int value = numbers[1]; // Lấy giá trị của phần tử thứ 2

front()

Trả về giá trị của phần tử đầu tiên trong vector.

Ví dụ:

std::vector<int> numbers = {1, 2, 3};
int firstValue = numbers.front(); // Lấy giá trị của phần tử đầu tiên

back()

Trả về giá trị của phần tử cuối cùng trong vector.

Ví dụ:

std::vector<int> numbers = {1, 2, 3};
int lastValue = numbers.back(); // Lấy giá trị của phần tử cuối cùng

Kiểm tra và truy vấn

size()

Hàm size() được sử dụng để trả về số lượng phần tử hiện có trong vector.

Ví dụ:

#include <iostream>
#include <vector>
// Bài đăng tại freetuts.net

int main() {
    std::vector<int> numbers = {1, 2, 3, 4, 5};

    // Sử dụng hàm size() để kiểm tra số lượng phần tử trong vector
    std::cout << "Số lượng phần tử trong vector: " << numbers.size() << std::endl;

    return 0;
}

Output:

Số lượng phần tử trong vector: 5

capacity()

Hàm capacity() trả về dung lượng hiện tại của vector, tức là số lượng phần tử mà vector có thể chứa mà không cần phải cấp phát thêm bộ nhớ.

Ví dụ:

#include <iostream>
#include <vector>

int main() {
    std::vector<int> numbers;
    // Bài đăng tại freetuts.net

    // Sử dụng hàm capacity() để kiểm tra dung lượng của vector
    std::cout << "Dung lượng của vector: " << numbers.capacity() << std::endl;

    return 0;
}

Output:

Dung lượng của vector: 0

empty()

Hàm empty() trả về true nếu vector không chứa bất kỳ phần tử nào, ngược lại trả về false.

Ví dụ:

#include <iostream>
#include <vector>
// Bài đăng tại freetuts.net

int main() {
    std::vector<int> numbers;

    // Sử dụng hàm empty() để kiểm tra vector có rỗng không
    if (numbers.empty()) {
        std::cout << "Vector rỗng." << std::endl;
    } else {
        std::cout << "Vector không rỗng." << std::endl;
    }

    return 0;
}

Output:

Vector rỗng.

Sắp xếp và thay đổi

sort()

Hàm sort() được sử dụng để sắp xếp các phần tử trong vector theo thứ tự tăng dần.

Ví dụ:

#include <iostream>
#include <vector>
#include <algorithm> // Để sử dụng hàm sort()
// Bài đăng tại freetuts.net

int main() {
    std::vector<int> numbers = {3, 1, 4, 1, 5, 9, 2, 6};

    // Sắp xếp các phần tử trong vector theo thứ tự tăng dần
    std::sort(numbers.begin(), numbers.end());

    // In ra vector sau khi sắp xếp
    std::cout << "Vector sau khi sắp xếp: ";
    for (int num : numbers) {
        std::cout << num << " ";
    }
    std::cout << std::endl;
    // Bài đăng tại freetuts.net

    return 0;
}

Output:

Vector sau khi sắp xếp: 1 1 2 3 4 5 6 9

reverse()

Hàm reverse() được sử dụng để đảo ngược thứ tự các phần tử trong vector.

Ví dụ:

#include <iostream>
#include <vector>
#include <algorithm> // Để sử dụng hàm reverse()
// Bài đăng tại freetuts.net

int main() {
    std::vector<int> numbers = {1, 2, 3, 4, 5};

    // Đảo ngược thứ tự các phần tử trong vector
    std::reverse(numbers.begin(), numbers.end());

    // In ra vector sau khi đảo ngược
    std::cout << "Vector sau khi đảo ngược: ";
    for (int num : numbers) {
        std::cout << num << " ";
    }
    std::cout << std::endl;

    return 0;
}

Output:

Vector sau khi đảo ngược: 5 4 3 2 1

swap()

Hàm swap() được sử dụng để hoán đổi nội dung giữa hai vector.

Ví dụ:

#include <iostream>
#include <vector>

int main() {
    std::vector<int> numbers1 = {1, 2, 3};
    std::vector<int> numbers2 = {4, 5, 6};
    // Bài đăng tại freetuts.net

    // Trao đổi nội dung giữa hai vector
    numbers1.swap(numbers2);

    // In ra vector sau khi hoán đổi
    std::cout << "Vector 1 sau khi hoán đổi: ";
    for (int num : numbers1) {
        std::cout << num << " ";
    }
    std::cout << std::endl;

    std::cout << "Vector 2 sau khi hoán đổi: ";
    for (int num : numbers2) {
        std::cout << num << " ";
    }
    std::cout << std::endl;

    return 0;
}

Output:

Vector 1 sau khi hoán đổi: 4 5 6 
Vector 2 sau khi hoán đổi: 1 2 3

clear()

Hàm clear() được sử dụng để xóa tất cả các phần tử trong vector, làm cho vector trở thành một vector rỗng.

Ví dụ:

#include <iostream>
#include <vector>

int main() {
    std::vector<int> numbers = {1, 2, 3, 4, 5};
    // Bài đăng tại freetuts.net

    // Xóa tất cả các phần tử của vector
    numbers.clear();

    // In ra vector sau khi xóa
    std::cout << "Số lượng phần tử sau khi xóa: " << numbers.size() << std::endl;

    return 0;
}

Output:

Số lượng phần tử sau khi xóa: 0

Ví dụ các hàm thường dùng của lớp Vector trong C++

Thêm và xóa phần tử

#include <iostream>
#include <vector>

int main() {
    std::vector<int> vec = {1, 2, 3};
     // Bài đăng tại freetuts.net

    // Thêm phần tử vào cuối vector
    vec.push_back(4);
    
    // Xóa phần tử cuối cùng của vector
    vec.pop_back();

    // Chèn phần tử vào vị trí bất kỳ
    vec.insert(vec.begin() + 1, 5);

    // Xóa phần tử tại vị trí bất kỳ
    vec.erase(vec.begin() + 2);

    // In ra các phần tử của vector
    for (int num : vec) {
        std::cout << num << " ";
    }
    return 0;
}

Output:

1 5 3 

Truy xuất phần tử

#include <iostream>
#include <vector>

int main() {
    std::vector<int> vec = {1, 2, 3, 4, 5};

    // Truy xuất phần tử ở vị trí 2
    int element = vec.at(2);
    
    // Truy xuất phần tử ở vị trí 3
    int element2 = vec[3];
    
    // Lấy phần tử đầu tiên
    int first_element = vec.front();
    // Bài đăng tại freetuts.net

    // Lấy phần tử cuối cùng
    int last_element = vec.back();

    std::cout << element << " " << element2 << " " << first_element << " " << last_element;
    return 0;
}

Output:

3 4 1 5

Kiểm tra và truy vấn

#include <iostream>
#include <vector>

int main() {
    std::vector<int> vec = {1, 2, 3, 4, 5};

    // Kiểm tra số lượng phần tử của vector
    int size = vec.size();
    // Bài đăng tại freetuts.net

    // Kiểm tra dung lượng của vector
    int capacity = vec.capacity();
    
    // Kiểm tra xem vector có rỗng không
    bool is_empty = vec.empty();

    std::cout << "Size: " << size << ", Capacity: " << capacity << ", Empty: " << is_empty;
    return 0;
}

Output:

Size: 5, Capacity: 5, Empty: 0

Sắp xếp và thay đổi

#include <iostream>
#include <vector>
#include <algorithm>

int main() {
    std::vector<int> vec = {3, 1, 4, 1, 5, 9};
    // Bài đăng tại freetuts.net

    // Sắp xếp vector tăng dần
    std::sort(vec.begin(), vec.end());

    // Đảo ngược thứ tự các phần tử trong vector
    std::reverse(vec.begin(), vec.end());
    
    // Trao đổi nội dung giữa hai vector
    std::vector<int> vec2 = {6, 7, 8};
    vec.swap(vec2);

    // Xóa tất cả các phần tử của vector
    vec.clear();

    return 0;
}

Kết bài

Trong bài viết này, mình đã tìm hiểu về các hàm thông dụng của lớp vector trong STL của C++. mình đã tìm hiểu cách thêm và xóa phần tử, truy xuất phần tử, kiểm tra và truy vấn về số lượng và dung lượng của vector, cũng như các hàm sắp xếp và thay đổi nội dung của vector.

Việc hiểu và sử dụng thành thạo các hàm này sẽ giúp mình làm việc hiệu quả với dữ liệu vector trong các ứng dụng C++ của mình. Hy vọng bài viết này đã cung cấp cho bạn cái nhìn tổng quan và kiến thức cần thiết để bắt đầu làm việc với lớp vector trong STL.

Cùng chuyên mục:

Các hàm xử lý ngày tháng (datetime.h) trong C/C++

Các hàm xử lý ngày tháng (datetime.h) trong C/C++

Các hàm xử lý số thực (float.h) trong C/C++

Các hàm xử lý số thực (float.h) trong C/C++

Các hàm xử lý số nguyên lớn (bigint.h) trong C/C++

Các hàm xử lý số nguyên lớn (bigint.h) trong C/C++

Các hàm xử lý thời gian (time.h) trong C

Các hàm xử lý thời gian (time.h) trong C

Các hàm xử lý chuỗi (string.h) trong C/C++

Các hàm xử lý chuỗi (string.h) trong C/C++

Thread Pools và Parallel Algorithms trong C++

Thread Pools và Parallel Algorithms trong C++

Tạo và quản lý các Multithreading trong C++

Tạo và quản lý các Multithreading trong C++

Xử lý ngoại lệ khi làm việc với Memory Allocation trong C++

Xử lý ngoại lệ khi làm việc với Memory Allocation trong C++

Try, Catch, và Throw của Exception Handling trong C++

Try, Catch, và Throw của Exception Handling trong C++

Cách sử dụng Lambda Expressions trong C++

Cách sử dụng Lambda Expressions trong C++

Sử dụng weak_ptr trong C++

Sử dụng weak_ptr trong C++

Sử dụng shared_ptr trong C++

Sử dụng shared_ptr trong C++

Sử dụng unique_ptr trong C++

Sử dụng unique_ptr trong C++

Tổng quan về Smart Pointers trong C++

Tổng quan về Smart Pointers trong C++

Sử dụng Iterators trong STL của C++

Sử dụng Iterators trong STL của C++

[Iterator] Sử dụng Vector trong C++

[Iterator] Sử dụng Vector trong C++

[Iterator] Sử dụng trong List trong C++

[Iterator] Sử dụng trong List trong C++

[STL] Sử dụng Vector trong C++

[STL] Sử dụng Vector trong C++

Tổng quan về Iterators trong C++

Tổng quan về Iterators trong C++

[STL] Các hàm thông dụng của Map trong C++

[STL] Các hàm thông dụng của Map trong C++

Top