tôi đang học vectơ và bối rối về cách mảng được sao chép để thevector đây"Một phần tử cuối cùng" có nghĩa là gì trong vectơ?
double p[] = {1, 2, 3, 4, 5};
std::vector<double> a(p, p+5);
Tôi cũng biết std::vector<double> a(3,5);
nghĩa 'nhường chỗ cho 3 và khởi tạo chúng bằng 5. Làm thế nào để công việc mã trên?
Điểm thứ hai là tôi đọc đoạn văn từ nơi tôi đã sao chép mã ở trên.
Hiểu điểm thứ hai là rất quan trọng khi làm việc với vectơ hoặc bất kỳ vùng chứa tiêu chuẩn nào khác. Chuỗi được kiểm soát luôn là được biểu thị dưới dạng [đầu tiên, một trong quá khứ cuối cùng) —không chỉ dành cho ctors, nhưng cũng cho mọi chức năng hoạt động trên một loạt các phần tử.
Tôi không biết ý nghĩa của số [first, one-past-last)
là gì? Tôi biết toán học nhưng không biết tại sao/sao vector sao chép mảng theo cách này?
Edited
một câu hỏi khác liên quan
Chức năng thành viên
end()
trả về một iterator rằng "điểm" đểone-past-the-last-element
trong chuỗi. Lưu ý rằng dereferencing bộ lặp được trả lại bởiend()
là bất hợp pháp và có kết quả không xác định.
Bạn có thể giải thích điều này one-past-the-last-element
nó là gì? và tại sao?
std :: vector có các hàm tạo quá tải đó là lý do tại sao mã trên hoạt động. và '[first, one-past-last)' có nghĩa là phần tử đầu tiên được bao gồm và một phần tử cuối cùng bị loại trừ, là con trỏ đến phần tử cuối + 1 –
@AngelusMortis nhưng tại sao? và tôi cũng đã chỉnh sửa câu hỏi của mình. tải lại. – UnKnown
đọc câu trả lời ngay bây giờ :), về cơ bản một con trỏ cuối cùng được sử dụng để xác định xem bạn đã kết thúc vectơ và quay trở lại làm đối tượng để kiểm tra và so sánh v.v. –