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

v.begin() + v.size() == v.end() của C++ vector v có được đảm bảo không?

In lại Tác giả: Walker 123 Thời gian cập nhật: 27-11-2023 23:50:23 32 4
mua khóa gpt4 Nike

tôi cố gắng giá trị Chèn vào vectơ C++ v Cái trước Tôi phần tử (hoặc phần tử (sau i-1)) ). Mã này rất đơn giản

v.insert(v.begin() + i, value);

tôi chắc chắn Tôi giữa 0 và v.size() Tuyên bố này có giá trị khi ở giữa. Hơn nữa, tôi tin rằng khi Tôi Đúng là lớn hơn v.size() hoặc số âm, câu lệnh có hành vi không xác định. Nhưng nếu i==v.size() Vải len? Vì thế v.bắt đầu() + tôi Nó có phải là một trình vòng lặp hợp lệ không? Nó có được đảm bảo không? v.begin() + v.size() == v.end()?

Nếu vậy, bạn có thể trích dẫn phần chính xác của tiêu chuẩn không? Ngoài ra, nếu các đảm bảo thay đổi giữa các phiên bản của tiêu chuẩn thì sẽ rất hữu ích nếu biết về những thay đổi này.

Nếu không có những đảm bảo này, có lẽ tôi nên sử dụng đoạn mã sau:

if (i == v.size()) {
v.insert(v.end(), value); // hoặc chỉ v.push_back(value);
} khác {
v.insert(v.begin() + i, value);
}

Nhưng sẽ tốt hơn nếu chỉ sử dụng một dòng như ở đầu câu hỏi này. Trên thực tế, mã ở đầu câu hỏi này hoạt động nhưng tôi muốn đảm bảo rằng nó hoạt động ở mọi nơi. Tôi đã thử tìm kiếm các tiêu chí nhưng không thể tìm thấy thuộc tính này cho các trình vòng lặp truy cập ngẫu nhiên.

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

giống tài liệu được mô tả

pos - iterator trước đó nội dung sẽ được chèn vào. pos có thể là trình vòng lặp end()

Vì vậy, bạn có thể sử dụng kết thúc(). Đối với câu hỏi khác của bạn:

Có đảm bảo rằng v.begin() + v.size() == v.end() không?

Có, nếu không thì vòng lặp này:

for( auto it = vec.begin(); it != vec.end(); ++it ) ...

sẽ không hoạt động vì nó phải thực thi chính xác ++nó vec.size() Hạng hai.

Về c++ - v.begin() + v.size() == v.end() của vectơ C++ v có được đảm bảo không? , 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/46879157/

32 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