Tôi không hiểu tại sao đoạn mã sau không sắp xếp được hai phần tử đầu tiên của vectơ:
int chính() {
std::vector v = {2,1,3,1,2};
std::sort(v.begin(),v.begin()+1);
for(phần tử tự động:v)
{
std::cout<<><>
}
// mã của bạn ở đây
return 0;
}
Có ý tưởng gì không?
std::sắp xếp
(và tất cả các thuật toán thư viện tiêu chuẩn) yêu cầu mộtnửa mở phạm vi. Trình lặp kết thúc là chỉ báo kết thúc quá khứ (phần mở). Vì thế [nó, nó + 1)
là một phạm vi chỉ có một phần tử. Trong trường hợp của bạn, đây chỉ là phần tử vectơ đầu tiên.
Vâng, phạm vi phần tử đơn đã được sắp xếp.
Tôi là một lập trình viên xuất sắc, rất giỏi!