operator<<,>>(std::philox_engine)

来自cppreference.com
< cpp‎ | numeric‎ | random‎ | philox engine

 
 
 
 
 
template< class CharT, class Traits >

friend std::basic_ostream<CharT, Traits>&
    operator<<( std::basic_ostream<CharT, Traits>& os,

                const philox_engine& e );
(1) (C++26 起)
template< class CharT, class Traits >

friend std::basic_istream<CharT, Traits>&
    operator>>( std::basic_istream<CharT, Traits>& is,

                philox_engine& e );
(2) (C++26 起)
1) 在 fmtflags 设置为 std::ios_base::dec | std::ios_base::left,以及填充字符设置为空格的条件下,将 e 的当前状态的文本表示写入 os
在写入完成后,恢复 os 原先的 fmtflags 和填充字符。
2) 在 fmtflags 设置为 std::ios_base::dec 的条件下,从 is 读取引擎状态的文本表示(记为 text),并将 e 的状态设为该状态。
在读取完成后,恢复 is 原先的 fmtflags。
  • 如果 text 不是在先前用某个输入流 pr 写入的文本表示,那么行为未定义。
  • 否则,如果以下值中存在 false,那么行为未定义:
  • is.getloc() == pr.getloc()
  • std::is_same<decltype(is)::char_type,
                 decltype(pr)::char_type>::value
  • std::is_same<decltype(is)::traits_type,
                 decltype(pr)::traits_type>::value
  • 否则,如果 text 不能表示任何 decltype(e) 的合法状态,那么 e 的状态不会改变,并且会调用 is.setstate(std::ios_base::failbit)
  • 否则,给定与 e 的类型相同的另一引擎 eng。如果 text 在先前以 pr << eng 写入,并且在 pr << engis >> e 之间没有调用 eeng,那么 e == engtrue

这些函数模板对常规的无限定有限定查找不可见,而只能在 decltype(e) 为实参的关联类时由实参依赖查找找到。

参数

os - 要插入数据的输出流
is - 要提取数据的输入流
e - 伪随机数引擎

返回值

1) os
2) is

复杂度

1,2) O(n)

异常

2) 设置 std::ios_base::failbit 时可能会抛出 std::ios_base::failure