Chuyển tới nội dung chính

std::map::begin

#include <map>

      iterator begin() noexcept;
const_iterator begin() const noexcept;

Trả về một iterator trỏ đến phần tử đầu tiên trong std::map. Do std::map lưu trữ các phần tử theo thứ tự được sắp xếp (theo key), phần tử đầu tiên mà begin() trỏ tới sẽ là phần tử có key nhỏ nhất (theo tiêu chí so sánh được sử dụng khi khởi tạo std::map).

Tham số

Không có tham số

Giá trị trả về

  • iterator begin()
    • Trả về một iterator có thể đọc và ghi, trỏ đến phần tử đầu tiên trong std::map.
  • const_iterator begin() const
    • Trả về một iterator chỉ đọc, trỏ đến phần tử đầu tiên trong std::map. Phiên bản này được sử dụng khi std::map là một đối tượng const.

Đặc điểm

  1. Trỏ đến phần tử đầu tiên (key nhỏ nhất): begin() luôn trả về iterator trỏ đến phần tử đầu tiên trong std::map theo thứ tự đã sắp xếp (theo key).
  2. Có thể dereference: Bạn có thể dereference (sử dụng toán tử *) iterator trả về bởi begin() để truy cập key-value của phần tử đầu tiên. Iterator của std::map trỏ đến một std::pair, với it->firstkeyit->secondvalue.
  3. noexcept: Cả hai phiên bản của 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.
  4. Phân biệt với end(): begin() trỏ đến phần tử đầu tiên, trong khi end() trỏ đến vị trí sau phần tử cuối cùng (past-the-end).
  5. Không làm thay đổi map: Gọi begin() không làm thay đổi nội dung hay trạng thái của std::map.
  6. std::map rỗng: Nếu std::map rỗng thì begin() sẽ trả về giá trị giống end().
  7. Không thể thay đổi key: Bạn không thể thay đổi trực tiếp giá trị key của phần tử thông qua iterator (phải xóa đi rồi chèn lại cặp key-value mới). Tuy nhiên, bạn có thể thay đổi value thông qua iterator.
  8. Độ phức tạp: O(1) - thời gian hằng số.

Ví dụ

#include <iostream>
#include <map>

int main() {
std::map<std::string, int> mymap = {
{"apple", 1},
{"banana", 2},
{"orange", 3}
};

// Duyệt map sử dụng begin() và end()
std::cout << "mymap elements:\n";
for (auto it = mymap.begin(); it != mymap.end(); ++it) {
std::cout << it->first << ": " << it->second << '\n';
}
// Output:
// mymap elements:
// apple: 1
// banana: 2
// orange: 3

// Sử dụng begin() để truy cập phần tử đầu tiên
std::cout << "First element key: " << mymap.begin()->first << '\n'; // Output: First element key: apple
std::cout << "First element value: " << mymap.begin()->second << '\n'; // Output: First element value: 1
return 0;
}

Các hàm liên quan

endTrả về một iterator trỏ đến vị trí sau phần tử cuối cùng trong std::map
rbeginTrả về một reverse_iterator trỏ đến phần tử cuối cùng trong std::map
rendTrả về một reverse_iterator trỏ đến phần tử trước phần tử đầu tiên của std::map