std::forward_list::before_begin
#include <forward_list>
iterator before_begin() noexcept;
const_iterator before_begin() const noexcept;
Trả về một iterator trỏ đến vị trí trước phần tử đầu tiên trong forward_list.
Tham số
Không có tham số
Giá trị trả về
- iterator (phiên bản không const): Trả về một iterator có thể đọc và ghi, trỏ đến vị trí trước phần tử đầu tiên.
- const_iterator (phiên bản const): Trả về một iterator chỉ đọc, trỏ đến vị trí trước phần tử đầu tiên. Phiên bản này được sử dụng khi forward_list là một đối tượng
const
.
Đặc điểm
- Vị trí đặc biệt:
before_begin()
không trỏ đến một phần tử thực sự trong forward_list, mà là một vị trí trước phần tử đầu tiên. - Không thể hủy tham chiếu (dereference): Bạn không thể dereference (sử dụng toán tử
*
) iterator trả về bởibefore_begin()
vì nó không trỏ đến một phần tử hợp lệ. - Sử dụng cho các thao tác đầu danh sách:
before_begin()
chủ yếu được sử dụng để xác định vị trí bắt đầu cho các thao tác chèn, xóa, nối danh sách ở đầu forward_list. - noexcept: Cả hai phiên bản của
before_begin()
đều được đánh dấu là noexcept, nghĩa là chúng được đảm bảo không ném ra ngoại lệ nào. - Không làm thay đổi danh sách: Gọi
before_begin()
không làm thay đổi nội dung hay trạng thái của forward_list. - Phân biệt begin():
begin()
thì trả về iterator trỏ tới phần tử đầu tiên, cònbefore_begin()
trả về iterator trỏ tới vị trí trước phần tử đầu tiên - Độ phức tạp:
O(1)
- thời gian hằng số.
Ví dụ
#include <iostream>
#include <forward_list>
int main() {
std::forward_list<int> list1 = {1, 2, 3};
std::forward_list<int> list2 = {4, 5, 6};
// Chuyển toàn bộ phần tử của list2 vào đầu list1
list1.splice_after(list1.before_begin(), list2);
std::cout << "list1:";
for (int x : list1) std::cout << ' ' << x; // Output: list1: 4 5 6 1 2 3
std::cout << '\n';
std::cout << "list2:";
for (int x : list2) std::cout << ' ' << x; // Output: list2: (empty)
std::cout << '\n';
return 0;
}
Các hàm liên quan
cbefore_begin | Trả về một const_iterator trỏ đến vị trí trước phần tử đầu tiên trong forward_list |
cbegin | Trả về một const_iterator trỏ đến phần tử đầu tiên trong forward_list |
cend | Trả về một const_iterator trỏ đến vị trí sau phần tử cuối cùng trong forward_list |