Tôi muốn để có thể viết bằng C++ một cái gì đó tương tự như đoạn mã sau Python:Kiểm tra xem một yếu tố là trong std :: initializer_list
if x in [1, 2, 3, 5] ...
để kiểm tra xem một phần tử được chứa trong một tập hợp các hard- các giá trị được mã hóa, được xác định tại chỗ. Như thế này:
if (in(x, {1, 2, 3, 5})) ...
Đây là việc thực hiện tốt các chức năng in
:
template<class T>
bool in(const T& x, std::initializer_list<T> c)
{
return std::find(c.begin(), c.end(), x) != c.end();
}
Câu hỏi của tôi là: Tôi thực sự phải viết chức năng này bằng cách bản thân mình? Có bất kỳ triển khai mặc định nào ở đó không? Có lẽ trong tăng? Tôi đã kiểm tra boost::contains
, nhưng nó chỉ hoạt động với các chuỗi.
Không có gì tốt hơn trong C++. Nhưng, bạn có thực sự cần (thuận tiện) ngữ nghĩa python trong c + +? –
Theo nguyên tắc chung, Python là "bao gồm pin" .... C++ là "làm cho pin của riêng bạn từ đầu". –
Bằng cách này, tại sao không bỏ qua các niềng răng và sử dụng một mẫu variadic? Hoặc là ít có thể đọc được? – Columbo