Các hoạt động của iterator trong set


Anh chị giải thích giúp em trường hợp này với ạ. Cái iterator của em đang trỏ vào phần tử đầu của set nhưng tại sao sau khi đẩy giá trị cũ và thêm giá trị mới vào thì iterator lại thay đổi vị trí ạ?

iterator của associate containers như set, multiset, map, multimap, unordered_set, unordered_map ko bị invalidated khi insert 1 phần tử mới vào container đó. Nên it ban đầu trỏ tới phần tử 6 thì nó sẽ trỏ tới phần tử đó luôn, chứ ko phải luôn trỏ tới phần tử đầu tiên. Chỉ khi phần tử nó trỏ tới bị xóa thì nó mới bị invalidated. Dòng cout cuối cùng là hên xui, tùy thư viện chuẩn của trình dịch nó implement thế nào mà có thể in ra 7 hoặc crash chương trình :V Muốn lấy phần tử đầu tiên thì gán lại it = se.begin() là được mà :V

3 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?