c++ & STL の 神奇用法

qpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqp^{qp^{qp^{qp^{qp^{qp^{qp^{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}_{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}}_{qp^{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}_{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}}}_{qp^{qp^{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}_{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}}_{qp^{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}_{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}}}}_{qp^{qp^{qp^{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}_{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}}_{qp^{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}_{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}}}_{qp^{qp^{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}_{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}}_{qp^{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}_{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}}}}}_{qp^{qp^{qp^{qp^{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}_{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}}_{qp^{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}_{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}}}_{qp^{qp^{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}_{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}}_{qp^{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}_{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}}}}_{qp^{qp^{qp^{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}_{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}}_{qp^{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}_{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}}}_{qp^{qp^{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}_{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}}_{qp^{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}_{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}}}}}}_{qp^{qp^{qp^{qp^{qp^{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}_{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}}_{qp^{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}_{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}}}_{qp^{qp^{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}_{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}}_{qp^{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}_{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}}}}_{qp^{qp^{qp^{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}_{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}}_{qp^{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}_{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}}}_{qp^{qp^{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}_{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}}_{qp^{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}_{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}}}}}_{qp^{qp^{qp^{qp^{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}_{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}}_{qp^{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}_{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}}}_{qp^{qp^{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}_{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}}_{qp^{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}_{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}}}}_{qp^{qp^{qp^{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}_{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}}_{qp^{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}_{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}}}_{qp^{qp^{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}_{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}}_{qp^{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}_{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}}}}}}}_{qp^{qp^{qp^{qp^{qp^{qp^{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}_{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}}_{qp^{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}_{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}}}_{qp^{qp^{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}_{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}}_{qp^{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}_{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}}}}_{qp^{qp^{qp^{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}_{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}}_{qp^{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}_{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}}}_{qp^{qp^{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}_{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}}_{qp^{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}_{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}}}}}_{qp^{qp^{qp^{qp^{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}_{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}}_{qp^{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}_{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}}}_{qp^{qp^{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}_{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}}_{qp^{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}_{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}}}}_{qp^{qp^{qp^{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}_{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}}_{qp^{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}_{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}}}_{qp^{qp^{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}_{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}}_{qp^{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}_{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}}}}}}_{qp^{qp^{qp^{qp^{qp^{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}_{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}}_{qp^{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}_{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}}}_{qp^{qp^{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}_{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}}_{qp^{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}_{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}}}}_{qp^{qp^{qp^{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}_{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}}_{qp^{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}_{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}}}_{qp^{qp^{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}_{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}}_{qp^{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}_{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}}}}}_{qp^{qp^{qp^{qp^{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}_{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}}_{qp^{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}_{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}}}_{qp^{qp^{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}_{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}}_{qp^{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}_{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}}}}_{qp^{qp^{qp^{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}_{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}}_{qp^{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}_{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}}}_{qp^{qp^{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}_{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}}_{qp^{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}_{qp^{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}_{qp^{qp^{qp}_{qp}}_{qp^{qp}_{qp}}}}}}}}}}

min()max() 的列表版本

普通的 min()max() 只能得到两个数的最值,但是这个版本可以得到许多数的最值.

例子:

1
2
min({1, 2, 3, 4, 5});
max({5, 4, 3, 2, 1});

时间复杂度:Θ(n)\Theta(n).

minmax_element(begin, end)

这个函数用于查询区间 [begin,end)[begin,end) 的最大、最小值,返回一个 pair,first 最小,second 最大.

时间复杂度 Θ(n)\Theta(n).

shuffle(begin, end, gen) & is_sorted(begin, end)

这个函数可以随机打乱数组,其中 gen 是一个随机数生成器(一般为 mt19937),begin 与 end 为首尾迭代器,时间复杂度 Θ(n)\Theta(n).

is_sorted() 可以检查一个序列是否有序,时间复杂度为 Θ(n)\Theta(n).

iota(begin, end, value)

将区间 [begin,end)[begin, end) 赋值为 value,value+1,value+2{value, value + 1, value + 2} 等等.

时间复杂度为 Θ(n)\Theta(n).

可以用来初始化并查集等.

prev_permutation(begin, end) & next_permutation(begin, end)

两个求排列的函数,一个求上一个排列,一个求下一个排列.

当然,“排列” 存在相同元素也是可以的.

如果已经是第一个 / 最后一个排列,返回 false,否则返回 true,并将区间 [begin,end)[begin, end) 更改为上 / 下一个排列.

时间复杂度:Θ(n)\Theta(n)

count(begin, end, value) & count_if(begin, end, func) & replace(begin, end, value1, value2) & fill(begin, end, value) & copy(begin, end, begin2) & find(begin, end, value)

这六个函数都是区间赋值或检查类的.

这些函数的时间复杂度均为 Θ(n)\Theta(n).

  1. count(begin, end, value) 返回区间 [begin,end)[begin, end) 中值为 valuevalue 的个数.

  2. count_if(begin, end, func) 对于区间 [begin,end)[begin, end) 中的一个值 xx,返回 func(x) 为 true 的个数。其中 func 应为一个返回值为 bool,有一个参数的函数指针,也可以 lambdalambda 函数.

  3. replace(begin, end, value1, value2) 将区间 [begin,end)[begin, end) 的所有等于 value1value1 的数替换为 value2value2.

  4. fill(begin, end, value) 将区间 [begin,end)[begin,end) 全部设为 valuevalue,类似函数 memset.

  5. copy(begin, end, begin2) 将区间 [begin,end)[begin,end) 复制到区间 [begin2,begin2+(endbegin))[begin2,begin2+(end-begin)).

  6. find(begin, end, value) 线性查找区间 [begin,end)[begin,end) 中为 valuevalue 的数。对于有序区间,请使用 lower_bound()upper_bound().

  7. accumulate(begin, end, value) 返回区间 [bgein,end)[bgein, end) 中每一个元素加上初始值 valuevalue 的总和,即 sum(begin,end)+value(endbegin)sum(begin, end) + value(end - begin).

时间复杂度为 Θ(n)\Theta(n).

accumulate(begin, end, value) 返回区间 [bgein,end)[bgein, end) 中每一个元素加上初始值 valuevalue 的总和,即 sum(begin,end)+value(endbegin)sum(begin, end) + value(end - begin).

时间复杂度为 Θ(n)\Theta(n).

partial_sum(begin, end, begin2) & adjacent_difference(bg1,ed1,bg2)

  1. partial_sum(begin, end, begin2) 将区间 [begin,end)[begin,end) 的前缀和存储至 [begin2,begin2+(endbegin))[begin2, begin2+(end-begin)) 中.

  2. adjacent_difference(bg1,ed1,bg2) 将区间 [begin,end)[begin,end) 的差分存储至 [begin2,begin2+(endbegin))[begin2, begin2+(end-begin)) 中.

时间复杂度为 Θ(n)\Theta(n).

inplace_merge(begin, mid, end) 对区间 [begin,mid)[begin, mid)) 和区间 [mid,end)[mid,end) 进行归并排序,并存入区间 [begin,mid)[begin, mid).

时空复杂度均为 Θ(n)\Theta(n). 可以传入第四个参数作为比较.

function<>

function<R<T1, T2, ..., Tn> > f; 表示定义一个返回值类型为 RR,形参为 T1,T2,...,TnT1, T2, ..., Tn 的名为 ff 的函数.

1
2
3
function<int<int, int> > func = [](int a, int b)->int{
return a + b;
}

显然,我们做到了在 C++ 里像 JavaScript 一样使用 lambda 函数了!

在这个类型出来之前,我们一般使用 auto 关键字(我也喜欢这样使用):

1
2
3
auto func = [](int a, int b)->int{
return a + b;
}

同样地,function<> 也可以作为函数指针,如下例:

1
2
3
4
5
6
int a(int a, int b){
return a + b;
}
function<int<int, int> > func = a;
//其等价于
int(func*)(int, int) a;

c++ & STL の 神奇用法
https://www.lzj-blog.top/2023/11/08/c++ & STL の 神奇用法/
作者
lzj
发布于
2023年11月8日
许可协议