cuốn sách gpt4 ai đã làm

Trình vòng lặp được trả về bởi end() vùng chứa tiêu chuẩn nào (nếu có)?

In lại Tác giả: Taklimakan Thời gian cập nhật: 2023-11-03 08:27:14 hai mươi bốn 4
mua khóa gpt4 Nike

Tôi cần một cách để truy cập nhanh vào dữ liệu trong vùng chứa.

Vì vậy, tôi nhớ trình vòng lặp cho vị trí dữ liệu đó. Vùng chứa có thể được sửa đổi sau (các phần tử được thêm và xóa), nhưng nếu tôi sử dụng loại vùng chứa không làm mất hiệu lực trình vòng lặp của tôi (như std::bản đồ hoặc std::danh sách) Tôi ổn.

Ngoài ra, dữ liệu của tôi có thể chưa có trong vùng chứa, vì vậy tôi đặt trình vòng lặp thành container.end() Để phản ánh điều này.

Container tiêu chuẩn nào đảm bảo end() Không thay đổi khi các phần tử được thêm và xóa? Vì vậy tôi vẫn có thể sử dụng trình vòng lặp của mình với container.end() Các giá trị trả về được so sánh mà không nhận được kết quả âm tính giả.

câu trả lời hay nhất

23.2.4/9 Nói về vùng chứa kết hợp:

Các thành viên chèn và thay thế sẽ không ảnh hưởng đến tính hợp lệ của các trình vòng lặp và các tham chiếu đến vùng chứa và các thành viên xóa sẽ chỉ làm mất hiệu lực các trình vòng lặp và các tham chiếu đến các phần tử bị xóa

Bây giờ, có những chỗ mà tiêu chuẩn nói về việc không làm mất hiệu lực "các trình lặp và tham chiếu đến các phần tử vùng chứa", do đó loại trừ end(). Tôi không tin đây là một trong số đó - tôi khá chắc chắn end() Trình vòng lặp là "trình vòng lặp tới vùng chứa".

23.3.5.4/1 cặp std::danh sách giải thích insert "Không ảnh hưởng đến tính hợp lệ của các vòng lặp và tham chiếu", 23.3.5.4/3xóa "Chỉ vô hiệu hóa các vòng lặp và tham chiếu đến các phần tử đã xóa". như nhau,end() Các trình vòng lặp là các trình vòng lặp, vì vậy tính hợp lệ của chúng không bị loại trừ.

Một điều cần lưu ý là đối với bất kỳ container nào,tráo đổi có thể làm mất hiệu lực của trình vòng lặp end() (Tôi cho rằng điều này là do có hai hành vi "tự nhiên", hoặc trình vòng lặp cuối trỏ đến phần cuối của cùng một vùng chứa hoặc phần cuối của vùng chứa mà nó được hoán đổi, nhưng tiêu chuẩn thì không' Tôi không muốn ra lệnh hoặc loại trừ các khả năng khác). Nhưng bạn không trao đổi, chỉ thêm và xóa các phần tử.

Về c++ - Bộ chứa tiêu chuẩn nào (nếu có) là trình vòng lặp được trả về bởi end() liên tục? , chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/15414541/

hai mươi bốn 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress