Tôi luôn luôn tự hỏi tại sao không cótại sao không sắp xếp (v) trong C++?
sort(v);// same as std::sort(v.begin(),v.end())
Nếu tôi nhớ lại thời gian một cách chính xác lâu rồi tôi thấy một clip boostcon nơi loa nói rằng khái niệm được yêu cầu cho điều này, nhưng tôi không hiểu tại sao. BTW Tôi đã thử này (trong VS 11) và nó hoạt động niceli từ những gì tôi có thể nhìn thấy.
template <typename Container>
void sortfx(Container& c)
{
std::sort(c.begin(),c.end());
}
int main()
{
std::vector<double> v;
//std::list<double> v; this causes compile errors
v.push_back(1701);
v.push_back(1729);
v.push_back(74656);
v.push_back(2063);
sortfx(v);
assert(std::is_sorted(begin(v),end(v)));
}
EDIT: Bjarne mình giải thích các khái niệm, với loại làm ví dụ :) https://www.informit.com/articles/article.aspx?p=2080042&WT.rss_f=Article&WT.rss_a=An%20Interview%20with%20Bjarne%20Stroustrup&WT.rss_ev=a
Đoán rằng họ chỉ đoán rằng nó không đáng để thêm khi bạn chỉ có thể dành thời gian để viết hai đối số, hoặc của riêng bạn, hoặc rằng công chúng sẽ không nhận được rất nhiều sử dụng trong số đó. Đó là một trong những bổ sung thư viện cá nhân có thể hoạt động tốt cho một số người. Bên cạnh đó, nếu họ thêm 'sắp xếp' cho toàn bộ thùng chứa, họ có thể sẽ phải thêm những người khác nữa. – chris
Bạn có thể thực hiện nó. Nhưng nếu bạn muốn sắp xếp một mảng tích hợp thì sao? Bạn nên sử dụng SFINAE hoặc một số cơ chế khác để đạt được điều tương tự. Nó chỉ là nhiều mã mà không có lý do. 'std :: sort (c.begin(), c.end());' là đủ ngắn. – mfontanini
@mfontanini Và những người khác sẽ nghĩ rằng luôn luôn chỉ rõ bộ so sánh được sử dụng cũng là "đủ ngắn", nhưng chúng tôi vẫn không phải làm vậy. Tôi đồng ý rằng đó là một thiếu sót gây phiền nhiễu, bởi vì thực sự 99% thời gian chúng tôi muốn sắp xếp toàn bộ container. – Voo