std::vector::begin
#include <vector>
iterator begin() noexcept;
const_iterator begin() const noexcept;
Trả về một iterator trỏ đến phần tử đầu tiên của vector.
Tham số
Không có tham số
Giá trị trả về
begin()
trả về một iterator trỏ đến phần tử đầu tiên của vector. Điều này cho phép duyệt từ đầu đến cuối vector.- Nếu gọi
begin()
trên một vector không hằng (non-const), nó trả về một iterator có thể thay đổi phần tử (mutable iterator). - Nếu gọi
begin()
trên một vector hằng (const vector) hoặc qua một con trỏ/ tham chiếu hằng, nó trả về const_iterator, không cho phép thay đổi giá trị các phần tử qua iterator này.
Đặc điểm
begin()
thường được dùng để khởi đầu một vòng lặp hoặc khi cần duyệt qua các phần tử của vector, kết hợp vớiend()
để xác định giới hạn cuối của vector.begin()
có thể được sử dụng trực tiếp với các thuật toán chuẩn trong C++ STL, nhưstd::sort
,std::find
,...begin()
có thời gian thực thi hằng sốO(1)
vì nó chỉ đơn giản là trả về iterator trỏ đến phần tử đầu tiên, không cần tính toán thêm.- Nếu vector rỗng,
begin()
sẽ bằngend()
, vì cả hai sẽ trỏ đến cùng vị trí (không có phần tử nào). begin()
an toàn khi vector được sử dụng bình thường, nhưng cần cẩn thận khi vector bị thay đổi kích thước trong khi iterator vẫn đang sử dụng, vì các iterator có thể trở nên không hợp lệ.
Ví dụ
#include <iostream>
#include <vector>
int main() {
std::vector<int> numbers = {1, 2, 3, 4, 5};
// Duyệt các phần tử của vector từ begin() đến end()
for (auto it = numbers.begin(); it != numbers.end(); ++it) {
std::cout << *it << " ";
}
return 0;
}
Các hàm liên quan
front | Truy xuất phần tử tại vị trí đầu tiên |
end | Trả về một iterator trỏ đến vị trí ngay sau phần tử cuối cùng của vector |
rbegin | Trả về một iterator ngược (reverse iterator) trỏ tới phần tử cuối cùng của vector |
rend | Trả về một iterator ngược trỏ tới phần tử trước phần tử đầu tiên của vector |