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] Sử dụng Vector trong C++

Trong ngôn ngữ lập trình C++, vector là một trong những cấu trúc dữ liệu linh hoạt và mạnh mẽ nhất từ thư viện tiêu chuẩn (STL). Vector cung cấp một cách hiệu quả để lưu trữ và quản lý một tập hợp các phần tử có thể thay đổi kích thước. Việc sử dụng vector không chỉ giúp chúng ta tiết kiệm thời gian và công sức trong việc quản lý dữ liệu mà còn cung cấp các công cụ mạnh mẽ để thực hiện các thao tác và xử lý dữ liệu phức tạp.

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 về cách sử dụng vector trong C++, bao gồm cách khai báo, thao tác truy cập, thêm/xóa phần tử, sắp xếp và tìm kiếm, cũng như các tình huống thực tế mà mình có thể gặp phải khi làm việc với vector.

vector trong cpp hoat dong the nao 63736792225 7263 jpg

Vector trong C++ là gì?

"Vector" là một cấu trúc dữ liệu thuộc thư viện chuẩn (STL - Standard Template Library). Nó cung cấp một cách linh hoạt và tiện lợi để lưu trữ và quản lý một chuỗi các phần tử.

Vector trong C++ được triển khai dưới dạng một mảng động (dynamic array), cho phép thêm, xóa phần tử một cách dễ dàng và hiệu quả. Các phần tử trong Vector được lưu trữ theo thứ tự liên tục trong bộ nhớ và được truy cập thông qua chỉ số.

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

Một số tính năng quan trọng của Vector trong C++ bao gồm:

  • Tăng kích thước tự động: Vector tự động thay đổi kích thước của nó khi cần thiết, giúp quản lý bộ nhớ một cách hiệu quả.

  • Truy cập ngẫu nhiên: Bạn có thể truy cập các phần tử trong Vector bằng cách sử dụng chỉ số.

  • Thao tác thêm, xóa phần tử: Vector cho phép thêm, xóa phần tử từ đầu, cuối hoặc ở bất kỳ vị trí nào trong Vector một cách dễ dàng.

  • Iterator hỗ trợ: Vector cung cấp iterator cho phép bạn duyệt qua tất cả các phần tử trong Vector.

Vector trong C++ là một trong những cấu trúc dữ liệu phổ biến và hữu ích nhất, được sử dụng rộng rãi trong việc lập trình ứng dụng C++ hiện đại.

Khai báo và khởi tạo Vector trong C++

Khai báo Vector

  • Vector trong C++ được khai báo bằng cách sử dụng lớp std::vector.
  • Cú pháp khai báo: std::vector<kiểu_dữ_liệu> tên_vector;

Ví dụ:

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

int main() {
    std::vector<int> myVector;
    return 0;
}

Khởi tạo Vector với các giá trị khởi đầu:

  • Cú pháp khởi tạo: std::vector<kiểu_dữ_liệu> tên_vector = {giá_trị1, giá_trị2, ...};

Ví dụ:

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

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

Khởi tạo Vector với kích thước và giá trị mặc định

  • Cú pháp khởi tạo: std::vector<kiểu_dữ_liệu> tên_vector (kích_thước, giá_trị_mặc_định);

Ví dụ:

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

int main() {
    std::vector<int> myVector(5, 0); // Vector với 5 phần tử có giá trị mặc định là 0
    return 0;
}

Truy cập vào phần tử của Vector trong C++

Truy cập theo chỉ số

  • Cú pháp: ten_vector[index] để truy cập vào phần tử ở vị trí index trong Vector.

Ví dụ:

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

int main() {
    std::vector<int> myVector = {1, 2, 3, 4, 5};
    std::cout << "Phan tu tai vi tri thu 2: " << myVector[1] << std::endl;
    return 0;
}

Output:

Phan tu tai vi tri thu 2: 2

Sử dụng Iterator

  • Iterator cho phép duyệt qua các phần tử của Vector một cách linh hoạt.
  • Cú pháp: std::vector<kiểu_dữ_liệu>::iterator hoặc auto.

Ví dụ:

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

int main() {
    std::vector<int> myVector = {1, 2, 3, 4, 5};
    
    // Sử dụng Iterator để duyệt qua các phần tử của Vector
    std::cout << "Cac phan tu cua Vector:" << std::endl;
    for (auto it = myVector.begin(); it != myVector.end(); ++it) {
        std::cout << *it << " ";
    }
    std::cout << std::endl;

    return 0;
}

Output:

Cac phan tu cua Vector:
1 2 3 4 5 

Thao tác thêm và xóa phần tử trong C++

Thêm phần tử vào Vector

  • push_back(value): Thêm phần tử value vào cuối Vector.
  • insert(iterator, value): Chèn phần tử value vào Vector tại vị trí được chỉ định bởi iterator.

Ví dụ:

#include <iostream>
#include <vector>

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

    // Thêm phần tử vào cuối Vector
    myVector.push_back(4);

    // Chèn phần tử vào vị trí thứ 2
    auto it = myVector.begin() + 1;
    myVector.insert(it, 5);

    // In ra Vector sau khi thêm
    std::cout << "Vector sau khi them: ";
    for (int num : myVector) {
        std::cout << num << " ";
    }
    std::cout << std::endl;

    return 0;
}

Output:

Vector sau khi them: 1 5 2 3 4 

Xóa phần tử khỏi Vector

  • pop_back(): Xóa phần tử cuối cùng của Vector.
  • erase(iterator): Xóa phần tử tại vị trí được chỉ định bởi iterator.

Ví dụ:

#include <iostream>
#include <vector>

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

    // Xóa phần tử cuối cùng của Vector
    myVector.pop_back();

    // Xóa phần tử thứ 3 của Vector
    auto it = myVector.begin() + 2;
    myVector.erase(it);

    // In ra Vector sau khi xóa
    std::cout << "Vector sau khi xoa: ";
    for (int num : myVector) {
        std::cout << num << " ";
    }
    std::cout << std::endl;

    return 0;
}

Output:

Vector sau khi xoa: 1 2 4 

Sắp xếp và tìm kiếm trong Vector trong C++

Sắp xếp Vector

  • sort(begin, end): Sắp xếp các phần tử của Vector từ vị trí begin đến vị trí end.
  • sort(compare): Sắp xếp Vector sử dụng hàm so sánh compare.

Ví dụ:

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

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

    // Sắp xếp Vector
    std::sort(myVector.begin(), myVector.end());
     //Bài đăng tại freetuts.net

    // In ra Vector sau khi sắp xếp
    std::cout << "Vector sau khi sap xep: ";
    for (int num : myVector) {
        std::cout << num << " ";
    }
    std::cout << std::endl;

    return 0;
}

Output:

Vector sau khi sap xep: 1 1 2 3 4 5 6 9 

Tìm kiếm phần tử trong Vector:

  • find(begin, end, value): Tìm kiếm phần tử có giá trị value trong Vector từ vị trí begin đến vị trí end.
  • find_if(begin, end, predicate): Tìm kiếm phần tử thỏa mãn điều kiện được xác định bởi predicate.

Ví dụ:

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

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

    // Tìm kiếm phần tử có giá trị 5 trong Vector
    auto it = std::find(myVector.begin(), myVector.end(), 5);
    if (it != myVector.end()) {
        std::cout << "Phan tu 5 duoc tim thay tai vi tri " << std::distance(myVector.begin(), it) << std::endl;
    } else {
        std::cout << "Phan tu 5 khong duoc tim thay trong Vector" << std::endl;
    }

    return 0;
}

Output:

Phan tu 5 duoc tim thay tai vi tri 4

Sử dụng Vector trong các tình huống thực tế trong C++

Lưu trữ dữ liệu

  • Vector là một cấu trúc dữ liệu linh hoạt và tiện lợi để lưu trữ dữ liệu có thể thay đổi kích thước.

Ví dụ: Lưu trữ danh sách sinh viên trong một lớp học.

#include <iostream>
#include <vector>
#include <string>

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

    // Thêm sinh viên vào Vector
    students.push_back("Alice");
    students.push_back("Bob");
    students.push_back("Charlie");

    // In ra danh sách sinh viên
    std::cout << "Danh sach sinh vien:" << std::endl;
    for (const std::string& student : students) {
        std::cout << student << std::endl;
    }

    return 0;
}

Output:

Danh sach sinh vien:
Alice
Bob
Charlie

Thao tác với dữ liệu số lớn

  • Vector cho phép lưu trữ và thao tác với một lượng lớn dữ liệu một cách hiệu quả.

Ví dụ: Tính tổng của một dãy số lớn.

#include <iostream>
#include <vector>
#include <numeric> // For std::accumulate

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

    // Tính tổng của dãy số
    int sum = std::accumulate(numbers.begin(), numbers.end(), 0);
    //Bài đăng tại freetuts.net

    std::cout << "Tong cua day so: " << sum << std::endl;

    return 0;
}

Output:

Tong cua day so: 55

Sử dụng trong các thuật toán và tác vụ lặp

  • Vector là một công cụ mạnh mẽ để thực hiện các thuật toán và tác vụ lặp.

Ví dụ: Sử dụng Vector để lưu trữ và sắp xếp danh sách sinh viên theo điểm số.

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

struct Student {
    std::string name;
    int score;
};

int main() {
    std::vector<Student> students = {{"Alice", 85}, {"Bob", 90}, {"Charlie", 75}};

    // Sắp xếp danh sách sinh viên theo điểm số giảm dần
    std::sort(students.begin(), students.end(), [](const Student& a, const Student& b) {
        return a.score > b.score;
    });
    //Bài đăng tại freetuts.net

    // In ra danh sách sinh viên đã được sắp xếp
    std::cout << "Danh sach sinh vien sau khi sap xep:" << std::endl;
    for (const Student& student : students) {
        std::cout << student.name << " - Diem: " << student.score << std::endl;
    }

    return 0;
}

Output:

Danh sach sinh vien sau khi sap xep:
Bob - Diem: 90
Alice - Diem: 85
Charlie - Diem: 75

Kết bài

Trên đây là một cái nhìn tổng quan về việc sử dụng vector trong ngôn ngữ lập trình C++. Vector là một công cụ mạnh mẽ và linh hoạt cho việc lưu trữ và quản lý dữ liệu, và nó rất hữu ích trong nhiều tình huống khác nhau. Từ cách khai báo và thao tác cơ bản đến việc sắp xếp, tìm kiếm và xử lý dữ liệu, vector cung cấp một loạt các tính năng và chức năng mạnh mẽ.

Hy vọng rằng thông qua bài viết này, bạn đã có cái nhìn rõ ràng hơn về cách sử dụng vector trong C++ và cách áp dụng nó trong các dự án của mình. Hãy tiếp tục thực hành và nâng cao kỹ năng lập trình của bạn với vector và các công cụ khác trong STL để trở thành một lập trình viên thành thạo hơn.

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++

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 lớp Vector trong C++

[STL] Các hàm thường dùng của lớp Vector 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