Tôi đang tìm vào cung cấp ostream
khai thác đối với một số các lớp học toán (ma trận, vector, vv) Một người bạn đã lưu ý rằng gcc tiêu chuẩn thư viện thực hiện các nhà điều hành ostream
cho std::complex
bao gồm việc sử dụng nội bộ một chuỗi chuỗi để định dạng đầu ra trước khi chuyển nó tới số thực tế ostream
:Sử dụng stringstream bên trong hàm ostream
/// Insertion operator for complex values.
template<typename _Tp, typename _CharT, class _Traits>
basic_ostream<_CharT, _Traits>&
operator<<(basic_ostream<_CharT, _Traits>& __os, const complex<_Tp>& __x)
{
basic_ostringstream<_CharT, _Traits> __s;
__s.flags(__os.flags());
__s.imbue(__os.getloc());
__s.precision(__os.precision());
__s << '(' << __x.real() << ',' << __x.imag() << ')';
return __os << __s.str();
}
Mẫu này cũng có thể nhìn thấy được. Chúng tôi đang cố gắng xác định xem đây có phải là mẫu có giá trị sau không. Đã có những lo ngại rằng nó liên quan đến việc bao gồm một tiêu đề bổ sung cho luồng chuỗi và có các phân bổ đống bổ sung cần thiết trong luồng chuỗi có khả năng tránh được.
Lý do hợp lý nhất là nếu khách hàng yêu cầu chức năng đó, họ có thể tạo luồng chuỗi và tự thực hiện trước.
Ai đó có thể giúp tôi hiểu tại sao điều này được coi là thực hành tốt hay không và liệu tôi có nên chấp nhận không?