| 430 | |
| 431 | template<typename T> |
| 432 | inline static std::string ArrayToStringFast(const std::vector<T>& arr, size_t n) { |
| 433 | if (arr.empty() || n == 0) { |
| 434 | return std::string(""); |
| 435 | } |
| 436 | __TToStringHelperFast<T, std::is_floating_point<T>::value, std::is_unsigned<T>::value> helper; |
| 437 | const size_t buf_len = 16; |
| 438 | std::vector<char> buffer(buf_len); |
| 439 | std::stringstream str_buf; |
| 440 | helper(arr[0], buffer.data(), buf_len); |
| 441 | str_buf << buffer.data(); |
| 442 | for (size_t i = 1; i < std::min(n, arr.size()); ++i) { |
| 443 | helper(arr[i], buffer.data(), buf_len); |
| 444 | str_buf << ' ' << buffer.data(); |
| 445 | } |
| 446 | return str_buf.str(); |
| 447 | } |
| 448 | |
| 449 | inline static std::string ArrayToString(const std::vector<double>& arr, size_t n) { |
| 450 | if (arr.empty() || n == 0) { |