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ách sắp xếp một vector trong C++

Việc sắp xếp dữ liệu là một trong những thao tác cơ bản và quan trọng. Với việc sử dụng STL (Standard Template Library), việc sắp xếp các phần tử trong một vector trở nên đơn giản và hiệu quả hơn bao giờ hết. Trong bài viết này, mình sẽ tìm hiểu về cách sắp xếp một vector trong C++ bằng cách sử dụng các công cụ và thuật toán có sẵn trong STL.

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.

Chúng ta sẽ bắt đầu bằng cách giới thiệu về vector trong STL và vai trò của nó trong việc lưu trữ dữ liệu. Sau đó, sẽ đi sâu vào các phương pháp sắp xếp vector, bao gồm sắp xếp tăng dần, sắp xếp giảm dần và cách sắp xếp sử dụng hàm so sánh tùy chỉnh. Cuối cùng, mình sẽ xem xét một số ví dụ minh họa để hiểu rõ hơn cách sử dụng các phương pháp này trong thực tế.

Screenshot 202024 03 26 20180116 png

Vector trong STL của C++

Vector là một trong những cấu trúc dữ liệu phổ biến nhất trong STL (Standard Template Library) của C++. Nó là một loại mảng động có kích thước linh hoạt, cho phép thêm, xóa và truy cập các phần tử một cách dễ dàng.

Khi khai báo một vector, bạn không cần phải chỉ định kích thước ban đầu của nó. Vector tự động mở rộng khi cần thiết để chứa thêm phần tử mới. Điều này làm cho việc sử dụng vector trở nên linh hoạt và thuận tiện trong việc lưu trữ dữ liệu.

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

Ví dụ:

#include <iostream>
#include <vector>

int main() {
    // Khai báo và khởi tạo vector rỗng
    std::vector<int> myVector;

    // Thêm các phần tử vào vector
    myVector.push_back(10);
    myVector.push_back(20);
    myVector.push_back(30);
    //Bài được đăng tại freetuts.net

    // Truy cập và hiển thị các phần tử trong vector
    std::cout << "Vector: ";
    for (int i = 0; i < myVector.size(); ++i) {
        std::cout << myVector[i] << " ";
    }
    std::cout << std::endl;

    return 0;
}

Kết quả:

Screenshot 202024 03 26 20170136 png

Trong ví dụ trên, mình đã khai báo và khởi tạo một vector rỗng ban đầu. Sau đó, đã thêm các phần tử vào vector bằng phương thức push_back() và truy cập các phần tử trong vector bằng cách sử dụng chỉ số. Vector tự động mở rộng kích thước của mình để chứa các phần tử mới khi cần thiết.

Cách sắp xếp một vector trong C++

Sắp xếp tăng dần

Để sắp xếp một vector theo thứ tự tăng dần, mình có thể sử dụng hàm std::sort() trong STL. Hàm này sẽ sắp xếp các phần tử của vector theo thứ tự tăng dần.

Hàm std::sort() trong STL:

  • Hàm std::sort() được sử dụng để sắp xếp các phần tử trong một range thành thứ tự tăng dần.
  • Hàm này có thể được sử dụng với các kiểu dữ liệu cơ bản và cũng với các kiểu dữ liệu do người dùng định nghĩa.

Ví dụ minh họa:

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

int main() {
    // Khai báo và khởi tạo vector
    std::vector<int> myVector = {5, 2, 8, 1, 9};

    // Sắp xếp vector theo thứ tự tăng dần
    std::sort(myVector.begin(), myVector.end());
    //Bài được đăng tại freetuts.net

    // Hiển thị vector sau khi đã sắp xếp
    std::cout << "Vector sau khi sap xep tang dan: ";
    for (int num : myVector) {
        std::cout << num << " ";
    }
    std::cout << std::endl;

    return 0;
}

Kết quả:

Screenshot 202024 03 26 20175138 png

Trong ví dụ này, mình khai báo và khởi tạo một vector với các giá trị ban đầu. Sau đó, chúng ta sử dụng hàm std::sort() để sắp xếp vector này thành thứ tự tăng dần. Cuối cùng, hiển thị vector sau khi đã sắp xếp.

Sắp xếp giảm dần

Để sắp xếp một vector theo thứ tự giảm dần, chúng ta có thể sử dụng hàm so sánh ngược std::greater<>() trong STL. Hàm này sẽ sắp xếp các phần tử của vector theo thứ tự giảm dần.

Hàm std::greater<>() trong STL:

  • Hàm std::greater<>() được sử dụng để so sánh hai phần tử và trả về true nếu phần tử đầu tiên lớn hơn phần tử thứ hai, ngược lại trả về false.

Ví dụ minh họa:

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

int main() {
    // Khai báo và khởi tạo vector
    std::vector<int> myVector = {5, 2, 8, 1, 9};

    // Sắp xếp vector theo thứ tự giảm dần
    std::sort(myVector.begin(), myVector.end(), std::greater<int>());
    //Bài được đăng tại freetuts.net

    // Hiển thị vector sau khi đã sắp xếp
    std::cout << "Vector sau khi sap xep giam dan: ";
    for (int num : myVector) {
        std::cout << num << " ";
    }
    std::cout << std::endl;

    return 0;
}

Kết quả:

Screenshot 202024 03 26 20175201 png

Trong ví dụ này, mình khai báo và khởi tạo một vector với các giá trị ban đầu. Sau đó, mình sử dụng hàm std::sort() với hàm so sánh ngược std::greater<>() để sắp xếp vector này thành thứ tự giảm dần. Cuối cùng, mình hiển thị vector sau khi đã sắp xếp.

Sắp xếp sử dụng hàm so sánh tùy chỉnh

Để sắp xếp một vector theo một tiêu chí nhất định, mình có thể sử dụng hàm so sánh tùy chỉnh. Điều này cho phép sắp xếp vector dựa trên một thuộc tính cụ thể hoặc một tiêu chí phức tạp khác.

Cách sử dụng hàm so sánh tùy chỉnh:

  • Mình có thể sử dụng hàm so sánh tùy chỉnh bằng cách truyền một hàm so sánh hoặc một hàm so sánh lambda như một tham số cho hàm std::sort().

Ví dụ minh họa:

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

// Hàm so sánh tùy chỉnh để sắp xếp vector theo giá trị tuyệt đối
bool customCompare(int a, int b) {
    return std::abs(a) < std::abs(b);
}

int main() {
    // Khai báo và khởi tạo vector
    std::vector<int> myVector = {5, -2, 8, -1, 9};

    // Sắp xếp vector theo giá trị tuyệt đối
    std::sort(myVector.begin(), myVector.end(), customCompare);

    // Hiển thị vector sau khi đã sắp xếp
    std::cout << "Vector sau khi sap xep theo gia tri tuyet doi: ";
    for (int num : myVector) {
        std::cout << num << " ";
    }
    std::cout << std::endl;

    return 0;
}

Kết quả:

Screenshot 202024 03 26 20175223 png

Trong ví dụ này, mình sử dụng một hàm so sánh tùy chỉnh customCompare() để sắp xếp vector theo giá trị tuyệt đối của các phần tử.

Kết bài

Trong khi viết ứng dụng C++, việc sắp xếp dữ liệu là một yếu tố quan trọng để tối ưu hóa hiệu suất và tăng tính linh hoạt của chương trình. Qua bài viết này, chúng ta đã hiểu rõ về cách sử dụng STL để sắp xếp một vector trong C++. Từ việc khai báo và sử dụng các phương thức cơ bản cho đến việc áp dụng các thuật toán sắp xếp và tìm kiếm, chúng ta đã nhận thấy tính tiện lợi và mạnh mẽ của STL trong việc xử lý dữ liệu. Hy vọng rằng thông qua bài viết này, bạn sẽ có được kiến thức và kỹ năng cần thiết để hiệu quả sử dụng vector và sắp xếp dữ liệu trong các ứng dụng C++ của mình.

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

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

Top