Rất khó chịu khi copy_if
không có trong C++. Có ai biết nếu nó sẽ được trong C + + 0x?là họ thêm copy_if vào C++ 0x?
7
A
Trả lời
7
5
Trong khi đó, nó không phải là rất khó để làm của riêng copy_if()
bạn sử dụng remove_copy_if()
:
#include <functional>
struct my_predicate : std::unary_function<my_arg_type, bool> {
bool operator()(my_arg_type const& x) const { ... }
};
// To perform "copy_if(x, y, z, my_predicate())", write:
remove_copy_if(x, y, z, std::not1(my_predicate()));
Sử dụng not1()
đòi hỏi lớp ngữ của bạn để cung cấp một loại lồng nhau, argument_type
, xác định kiểu của đối số - như được hiển thị ở trên, một cách thuận tiện để thực hiện việc này là lấy từ số unary_function<T, U>
, trong đó T
là loại đối số.
4
Chỉ cần cho đầy đủ, trong trường hợp ai đó Googles/cách của mình cho câu hỏi này, cần phải nói rằng bây giờ (trong C++ 11 và sau) có một thuật toán copy if. Nó hoạt động như mong đợi (sao chép các phần tử trong một phạm vi, mà một số biến vị ngữ trả về true, đến một phạm vi khác).
Một trường hợp sử dụng điển hình sẽ là
std::vector<int> foo{ 25, 15, 5, -5, -15 };
std::vector<int> bar;
// copy only positive numbers:
auto it = std::copy_if (foo.begin(), foo.end(), std::back_inserter(bar),
[](int i){return !(i<0);
});
Các vấn đề liên quan
- 1. thêm hỗ trợ C++ 0x vào cmake
- 2. Tại sao không có thuật toán std :: copy_if?
- 3. C++ 0x luồng
- 4. C++ 0x Lambda overhead
- 5. C++ 0x - Khi nào?
- 6. cách thêm họ cột vào cột trong hbase
- 7. Đây có phải là mã C++ 0x chính xác không?
- 8. C++ 0x regex trong GCC
- 9. Chuyển sang C++ 0x từ C++ 98
- 10. CMake clang và C++ 0x
- 11. C++ 0x std :: shared_ptr vs. boost :: shared_ptr
- 12. Chuyên mẫu trên lambda trong C++ 0x
- 13. C++ 0x lambdas mã hóa kiểu
- 14. C++ 0x biên dịch nhưng lỗi biên tập nhật thực ngay cả với -gnu ++ 0x discovery
- 15. Sử dụng __thread bằng C++ 0x
- 16. Xóa chức năng ảo trong C++ 0x
- 17. C++ 0x: bộ nhớ đặt hàng
- 18. ghi đè Explicit và C++ 0x thức
- 19. C++ 0x Peer Constructor trong VC2010
- 20. C++ 0x emplace_back với mục phi copyable
- 21. Thêm C++ DLL vào dự án C#
- 22. Tôi cần biết gì về C++ 0x?
- 23. C++ 0x thực hiện mẫu nguyên tử
- 24. Tăng lambda :: _ 1 trong C++ 0x
- 25. Loại nằm dưới của một C++ enum trong C++ 0x
- 26. Tìm hiểu về các tính năng của C++ 0x
- 27. Làm thế nào để ngắt chuỗi chờ C++ 0x?
- 28. Chức năng Unicode mới nào có trong C++ 0x?
- 29. Cách chính xác để thêm 1 byte vào một con trỏ trong C/C++ là gì?
- 30. C++ 0x tối ưu hóa chất lượng trình biên dịch
FWIW, nó bị bỏ ra khỏi tiêu chuẩn hiện nay do nhầm lẫn :-) – dirkgently