Tôi có một vectơ (thứ tự quan trọng) của các đối tượng (cho phép gọi chúng là lớp myobj), nơi tôi đang cố xóa nhiều đối tượng cùng một lúc.C++ remove_if trên vectơ của các đối tượng
class vectorList
{
vector<*myobj> myList;
};
class myobj
{
char* myName;
int index;
bool m_bMarkedDelete;
}
Tôi đã nghĩ rằng cách tốt nhất để làm điều này là đánh dấu các đối tượng myobj cụ thể để xóa và sau đó gọi myList.remove_if() trên vectơ. Tuy nhiên, tôi không chắc chắn chính xác làm thế nào để sử dụng các vị từ và như vậy cho việc này. Tôi có nên tạo biến thành viên trong đối tượng cho phép tôi nói rằng tôi muốn xóa myobj và sau đó tạo một biến vị ngữ để kiểm tra xem biến thành viên đã được đặt chưa?
Làm cách nào để triển khai biến vị ngữ như một phần của lớp vectorList?
Nó có thể không có liên quan nhưng một std :: danh sách giữ lại trật tự và có chức năng remove_if riêng của nó nhanh hơn nhiều và không cần xóa riêng biệt. – Ant
@Ant: 'danh sách :: remove_if' nhanh hơn xóa và xóa trên vectơ? Trong bất kì trường hợp nào? Đó chắc chắn không phải là trường hợp trên nhiều bài kiểm tra hợp lý mà tôi từng làm. Đừng cho rằng chỉ vì xóa là một hoạt động liên tục trong thời gian cho danh sách, nó sẽ nhanh hơn. Bảo đảm tiếp cận và truy cập ngẫu nhiên của 'std :: vector' mua nó rất nhiều hiệu suất. –