binary_function không còn được dùng nữa và sẽ bị xóa trong C++ 17. Tôi đã tìm kiếm trên các ấn phẩm khác nhau, nhưng tôi không thể tìm thấy một cách chính xác để thay thế nó. Tôi muốn biết làm thế nào tôi nên viết đoạn mã sau trong C + + 11 phong cách.thay thế cho binary_function
template <class T>
inline T absolute(const T &x) {
return (x >= 0) ? x : -x;
}
template <class T>
struct absoluteLess : public std::binary_function<T, T, bool> {
bool operator()(const T &x, const T &y) const {
return absolute(x) < absolute(y);
}
};
template <class T>
struct absoluteGreater : public std::binary_function<T, T, bool> {
bool operator()(T &x, T &y) const {
return absolute(x) > absolute(y);
}
};
EDIT: Tôi đang sử dụng các chức năng theo cách sau:
output[j] = *std::max_element(input.begin() + prev, input.begin() + pos, absoluteLess<float>());
đầu vào và đầu ra là vectơ, bên trong một vòng lặp for
lý do tại sao bạn cần nó?loại đặc điểm và decltype có thể tìm ra loại 'toán tử()' mà không có nhu cầu của 'binary_function' –
Làm thế nào để bạn sử dụng các hàm mẫu này? Câu trả lời phụ thuộc vào cách sử dụng. – Rostislav
http://stackoverflow.com/a/22863957/642626 thats cách bạn tìm ra các đối số và kiểu trả về của bất kỳ đối tượng có thể gọi nào. –