thư viện algorithm trong C++

Thư viện algorithm – Danh sách các hàm trong thư viện algorithm C++

Thư viện algorithm trong C++ là một thư viện có sẵn được thiết kế đặc biệt để thao tác với dữ liệu mảng theo phạm vi.

Phạm vi có thể hiểu là một chuỗi các đối tượng có thể truy cập thông qua biến lặp hoặc con trỏ. Các hàm này sẽ thực thi trực tiếp trên giá trị nhưng sẽ không tác động đến cấu trúc dữ liệu của đối tượng nó tác động đến(không làm thay đổi kích thước và không gian bộ nhớ của đối tượng).

Bài viết này Nguyễn Văn Hiếu sẽ tổng hợp các hàm hữu dụng nhất mà tác giả thường sử dụng. Nội dụng trình bày cho từng hàm sẽ là: cú pháp, chức năng và ví dụ minh họa. Các bạn có thể xem tất cả các hàm của thư viện này ở link cuối bài viết.

Thư viện algorithm C/C++

Để thêm thư viện algorithm vào code C/C++, bạn chỉ cần thêm dòng này.

Các hàm của thư viện algorithm trong C++

1. std::for_each

Gọi lệnh thực thi thi hàm fn cho từng phần tử có chỉ số trong phạm vi [first; last).

Lưu ý: Hãy chú ý cặp ngoặc [first; last). Cặp này có nghĩa là mọi chỉ số x với first <= x < last.

2. std::find

Trả về chỉ số của phần tử đầu tiên trong [first, last) nếu nó bằng với giá trị val. If không tìm được phần tử nào, hàm trả về giá trị last.

3. std::count

Trả về số phần tử trong [first, last) có giá trị bằng với val.

4. std::copy

Hàm std::copy trong thư viện algorithm thực hiện copy toàn bộ giá trị mảng trong [first, last) sang sang mảng mới bắt đầu ở biến lặp result.

5. std::swap

Thư viện algorithm trong C++ có hàm std::swap giúp bạn nhanh chóng hoán đổi giá trị của a và b.

6. std::sort

Một hàm rất hay trong thư viện algorithm đó chính là hàm sắp xếp này. Hàm này có tốc độ sắp xếp còn nhanh hơn thuật toán quick sort đấy.

Sắp xếp dãy theo thứ tự tăng dần(mặc định). Nếu muốn sắp xếp theo thứ tự ngược lại, bạn sẽ cần truyền vào hàm comp.

Với các kiểu dữ liệu nguyên thủy, có hàm comp mặc định là std::greaterstd::less. Xem ví dụ để hiểu rõ hơn

Các hàm tiếp theo trong thư viện algorithm trong C++ (có chỉ mục là 7,8,9) là các hàm thực thi dựa trên ý tưởng của thuật toán tìm kiếm nhị phân.

7. std::lower_bound

Trả về iterator trỏ đến phần tử đầu tiên trong [first, last) không nhỏ hơn val. Nếu tất cả các phần tử nhỏ hơn val, trả về last

8. std::upper_bound

Trả về iterator đầu tiên trong [first, last) lớn hơn val. Nếu không tồn tại, trả về last

Ví dụ xem ở mục 7.

9. std::binary_search

Trả về true nếu tồn tại phần tử trong [first, last) bằng với val. Ngược lại, trả về false.

10. std::min

Trả về phần tử nhỏ hơn giữa a và b. Nếu a = b, trả về a.

11. std::max

Trả về phần tử lớn hơn giữa a và b. Nếu a = b, trả về a.

12.std::min_element

Trả về phần tử có giá trị nhỏ nhất trong [first, last).

13. std::max_element

Trả về phần tử có giá trị lớn nhất trong [first, last).

Xem ví dụ ở mục 12.

14. std::next_permutation

15. std::prev_permutation

Tương tự, trả về hoán vị tiếp theo có thứ tự sắp xếp thấp hơn hoán vị hiện tại

Tài liệu tham khảo

  1. http://www.cplusplus.com/reference/algorithm/
  2. https://en.cppreference.com/w/cpp/algorithm

Similar Posts

Subscribe
Notify of
guest
3 Bình luận
Inline Feedbacks
View all comments