TẤT CẢ,Có thùng chứa được sắp xếp trong STL
Có thùng chứa được sắp xếp trong STL không? Ý tôi là như sau:
Tôi có một std :: vector trong đó Foo là một lớp được tạo tùy chỉnh. Tôi cũng có một so sánh của một số loại mà sẽ so sánh các lĩnh vực của lớp Foo.
Bây giờ, ở đâu đó trong mã của tôi Tôi đang làm:
std::sort(myvec.begin(), myvec.end(), comparator);
mà sẽ sắp xếp các vector theo các quy tắc tôi xác định trong so sánh.
Bây giờ tôi muốn chèn phần tử của lớp Foo vào vectơ đó. Nếu tôi có thể tôi muốn chỉ cần viết:
mysortedvector.push_back(Foo());
và điều gì sẽ xảy ra là vector sẽ đặt yếu tố mới này theo so sánh với vị trí của nó.
Thay vào đó, ngay bây giờ tôi phải viết:
myvec.push_back(Foo());
std::sort(myvec.begin(), myvec.end(), comparator);
mà chỉ là một sự lãng phí thời gian, kể từ khi vector đã được sắp xếp và tất cả tôi cần là để đặt các yếu tố mới một cách thích hợp.
Bây giờ, vì bản chất chương trình của tôi, tôi không thể sử dụng tiêu chuẩn :: map <> vì tôi không có cặp khóa/giá trị, chỉ là một vectơ đơn giản.
Nếu tôi sử dụng stl :: list Tôi lại cần phải gọi sắp xếp sau mỗi lần chèn.
Cảm ơn bạn đã đưa ra bất kỳ đề xuất nào.
gì về 'std :: set'? – us2012
Nếu bạn biết nó sẽ đi đâu, bạn có thể sử dụng insert() – james82345
@ us2012, tôi đã xem std :: set.Vấn đề là đối tượng đó sẽ được trình bày trong một khung lưới, nơi người dùng có thể sắp xếp chúng dựa trên tất cả các thành viên của lớp và sửa đổi chúng theo bất kỳ cách nào mà chúng thấy phù hợp. Như std :: thiết lập các thành viên là const theo định nghĩa, container này không phải dành cho tôi. – Igor