57 if (begin(cont) == end(cont))
59 auto it = begin(cont);
62 while (++it != end(cont))
80 if (begin(cont) == end(cont))
82 auto it = begin(cont);
85 while (++it != end(cont))
100 template <
class Cont>
103 if (begin(cont) == end(cont))
105 auto it = begin(cont);
109 repr(it->second, os);
110 while (++it != end(cont))
115 repr(it->second, os);
133 template <class Tuple, size_t N = std::tuple_size<Tuple>::value>
141 static void print(std::ostream &os,
const Tuple &t)
146 repr(std::get<N - 1>(t), os);
153 template <
class Tuple>
156 static void print(std::ostream &os,
const Tuple &t)
158 repr(std::get<0>(t), os);
165 template <
class Tuple>
168 static void print(std::ostream &,
const Tuple &) {}
183 std::ostream &
operator<<(std::ostream &os,
const std::vector<T> &vec)
190 std::ostream &
operator<<(std::ostream &os,
const std::deque<T> &deq)
197 std::ostream &
operator<<(std::ostream &os,
const std::list<T> &lst)
204 std::ostream &
operator<<(std::ostream &os,
const std::forward_list<T> &flst)
210 template <
class T,
size_t n>
211 std::ostream &
operator<<(std::ostream &os,
const std::array<T, n> &arr)
218 std::ostream &
operator<<(std::ostream &os,
const std::set<T> &s)
224 template <
class K,
class V>
225 std::ostream &
operator<<(std::ostream &os,
const std::map<K, V> &m)
232 std::ostream &
operator<<(std::ostream &os,
const std::multiset<T> &ms)
238 template <
class K,
class V>
239 std::ostream &
operator<<(std::ostream &os,
const std::multimap<K, V> &mm)
246 std::ostream &
operator<<(std::ostream &os,
const std::unordered_set<T> &us)
252 template <
class K,
class V>
254 const std::unordered_map<K, V> &um)
262 const std::unordered_multiset<T> &ums)
268 template <
class K,
class V>
270 const std::unordered_multimap<K, V> &ump)
277 std::ostream &
operator<<(std::ostream &os,
const std::valarray<T> &va)
290 template <
class T,
class U>
291 std::ostream &
operator<<(std::ostream &os,
const std::pair<T, U> &p)
307 template <
class... Args>
308 std::ostream &
operator<<(std::ostream &os,
const std::tuple<Args...> &t)
330 template <
class T,
size_t N>
333 std::array<T, N> arr;
334 std::copy(ar, ar +
N, arr.begin());
345 template <
class T,
size_t N>
348 std::vector<T> vec(
N);
349 std::copy(ar, ar +
N, vec.begin());
381 Output() : os(std::
cout), sep(
" "), end(
"\n"), isFlush(true) {}
390 Output(std::ostream &o,
const std::string &s,
const std::string &e,
bool isF)
391 : os(o), sep(s), end(e), isFlush(isF) {}
426 template <
class T,
class... Args>
Output & operator()(const T &t)
单参数调用:输出该参数后加结尾符。
Definition output.h:412
Output & operator()()
无参数调用:仅输出结尾符(如换行)。
Definition output.h:397
Output(std::ostream &o, const std::string &s, const std::string &e, bool isF)
自定义构造。
Definition output.h:390
Output & operator()(const T &t, const Args &...args)
多参数调用:依次输出每个参数,参数之间插入分隔符,最后加结尾符。
Definition output.h:427
Output()
默认构造,输出到 std::cout,分隔符为空格,结尾为换行,并刷新。
Definition output.h:381
std::array< T, N > to_array(const T(&ar)[N])
将 C 风格数组转换为 std::array。
Definition output.h:331
std::vector< T > to_vector(const T(&ar)[N])
将 C 风格数组转换为 std::vector。
Definition output.h:346
MultiArray< T, Dims... > operator<<(const MultiArray< T, Dims... > &a, const MultiArray< T, Dims... > &b)
左移(数组 << 数组)。
Definition multiarray.h:1227
std::ostream & cont_print_sequence(std::ostream &os, const Cont &cont)
输出序列容器(如 vector, list)的内容,格式为 [a, b, c]。
Definition output.h:55
std::ostream & cont_print_set(std::ostream &os, const Cont &cont)
输出集合容器(如 set, unordered_set)的内容,格式为 {a, b, c}。
Definition output.h:78
std::ostream & cont_print_map(std::ostream &os, const Cont &cont)
输出映射容器(如 map, unordered_map)的内容,格式为 {key: value, ...}。
Definition output.h:101
enable_if_string< T > repr(T &&value, std::ostream &os=std::cout)
输出字符串类型(std::string, const char* 等)的表示,带双引号。
Definition repr.h:79
class console::Output print
全局输出对象,模仿 Python 的 print 函数。
struct console::InputSettings cout
提供类似 Python 的 repr() 函数,用于生成对象的可读字符串表示。
static void print(std::ostream &, const Tuple &)
Definition output.h:168
static void print(std::ostream &os, const Tuple &t)
Definition output.h:156
递归打印 tuple 的辅助模板(主模板)。
Definition output.h:135
static void print(std::ostream &os, const Tuple &t)
递归打印 tuple 元素。
Definition output.h:141