Theo tham chiếu C++, thiết lập :: chèn là nghĩa vụ phải trả về cặp nơi mà trình vòng lặp trỏ tới phần tử mới được chèn vào hoặc phần tử hiện có nếu tồn tại.return iterator từ std :: set :: insert() là const?
Nhưng tôi đang gặp một vấn đề gán cho iterator, như ví dụ đơn giản này cho thấy:
int main() {
set<int> set;
*set.insert(5).first = 5;
return 0;
}
Tôi đã thử G ++ và Clang và không hoạt động.
set.cc:7:24: error: read-only variable is not assignable
*set.insert(5).first = 5;
~~~~~~~~~~~~~~~~~~~~^
Tôi không thể tìm thấy bất kỳ điều gì trong tài liệu chỉ ra rằng trình vòng lặp nên ưu tiên đối tượng const và không có chữ ký nào cho biết điều này. Ai đó có thể giúp tôi hiểu tại sao điều này không hiệu quả?
Duh. Tôi nên nghĩ về điều này. Cảm ơn. Trong ví dụ thực sự của tôi, nó không phải là một int, là một đối tượng phức tạp hơn mà tôi muốn thay đổi một số trạng thái trên. – drwowe