Bạn có thể sử dụng filter_iterator
từ tăng. Here is an example với bộ sưu tập cơ bản là một mảng thông thường.
Dưới đây là ví dụ về mã chưa được kiểm tra để bạn phát; Tôi phải làm một số giả định về Student
(operator<<
hợp lệ cho đầu ra, đất nước tiếp xúc qua std::string country() const
)
struct checkCountry
{
std::string country;
bool operator()(const Student& x)
{
return (x.country() == country);
}
};
int main()
{
std::vector<Student> studentList;
studentList.push_back(Student("Tom", 'M', "91213242", "America"));
studentList.push_back(Student("Jessilyn", 'F', "98422333", "Europe"));
typedef boost::filter_iterator<checkCountry, std::vector<Student>::iterator> FilterIter;
checkCountry predicate;
predicate.country = "America";
FilterIter filter_iter_first(predicate, studentList.begin(), studentList.end());
FilterIter filter_iter_last(predicate, studentList.end(), studentList.end());
std::copy(filter_iter_first, filter_iter_last, std::ostream_iterator<Student>(std::cout, " "));
}
Bạn cần [xóa thành ngữ xóa] (http://en.wikipedia.org/wiki/Erase-remove_idiom). –
@Oli - Chỉ khi anh ấy muốn xóa các mục nhập của người Mỹ. Tôi đã đưa anh ta để có nghĩa là anh ta muốn bảo tồn các vector, nhưng chỉ hiển thị các yếu tố nhất định. –
Tôi phải giữ lại các mục khác để xóa-xóa sẽ không hoạt động? – delphi316