199 lines
4.5 KiB
C
199 lines
4.5 KiB
C
|
|
#pragma once
|
|||
|
|
//<2F><><EFBFBD><EFBFBD>ͷ<EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>using<6E><67><EFBFBD><EFBFBD>
|
|||
|
|
//20191122-1653
|
|||
|
|
|
|||
|
|
|
|||
|
|
//c<><63>
|
|||
|
|
#include <cstdio>//cio
|
|||
|
|
#include <cassert>//<2F><><EFBFBD><EFBFBD>
|
|||
|
|
#include <cstddef>//<2F><>С<EFBFBD><D0A1><EFBFBD><EFBFBD>
|
|||
|
|
#include <cstdlib>//<2F><><EFBFBD><EFBFBD>
|
|||
|
|
#include <cctype>//<2F>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
#include <cstring>//<2F>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
#include <cmath>//<2F><>ѧ
|
|||
|
|
#include <clocale>//<2F><><EFBFBD>ػ<EFBFBD>
|
|||
|
|
#include <cstdint>//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>չ
|
|||
|
|
#include <ctime>//ʱ<><CAB1>
|
|||
|
|
#include <cstdarg>//<2F>䳤<EFBFBD><E4B3A4><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
//io<69><6F><EFBFBD><EFBFBD>
|
|||
|
|
#include <iostream>//c++io
|
|||
|
|
using std::cin;
|
|||
|
|
using std::cout;
|
|||
|
|
using std::cerr;
|
|||
|
|
using std::endl;
|
|||
|
|
using std::flush;
|
|||
|
|
using std::ends;
|
|||
|
|
using std::ios_base;
|
|||
|
|
using std::istream;
|
|||
|
|
using std::ostream;
|
|||
|
|
#include <sstream>//<2F>ַ<EFBFBD><D6B7><EFBFBD>io
|
|||
|
|
using std::istringstream;
|
|||
|
|
using std::ostringstream;
|
|||
|
|
using std::stringstream;
|
|||
|
|
#include <fstream>//<2F>ļ<EFBFBD>io
|
|||
|
|
using std::ifstream;
|
|||
|
|
using std::ofstream;
|
|||
|
|
using std::fstream;
|
|||
|
|
#include <iomanip>//<2F><EFBFBD>io
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
#include <type_traits>//<2F><><EFBFBD>ʹ<EFBFBD><CDB4><EFBFBD>
|
|||
|
|
using std::enable_if;
|
|||
|
|
#include<limits>//<2F><>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>
|
|||
|
|
using std::numeric_limits;
|
|||
|
|
#include <numeric>//<2F><>ֵ<EFBFBD>㷨
|
|||
|
|
#include <algorithm>//<2F>㷨
|
|||
|
|
#include <initializer_list>//<2F>б<EFBFBD>
|
|||
|
|
using std::initializer_list;
|
|||
|
|
#include <utility>//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
using std::swap;
|
|||
|
|
using std::pair;
|
|||
|
|
using std::make_pair;
|
|||
|
|
using std::piecewise_construct;
|
|||
|
|
using std::declval;
|
|||
|
|
#include <tuple>//Ԫ<><D4AA>
|
|||
|
|
using std::tuple;
|
|||
|
|
using std::tuple_size;
|
|||
|
|
using std::tuple_element;
|
|||
|
|
using std::make_tuple;
|
|||
|
|
//using std::tie;
|
|||
|
|
using std::forward_as_tuple;
|
|||
|
|
using std::ignore;
|
|||
|
|
#include <functional>//<2F><><EFBFBD><EFBFBD>
|
|||
|
|
using std::function;
|
|||
|
|
using std::hash;
|
|||
|
|
//using std::ref;
|
|||
|
|
//using std::cref;
|
|||
|
|
namespace placeholders = std::placeholders;
|
|||
|
|
#include <iterator>//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
using std::iterator_traits;
|
|||
|
|
using std::reverse_iterator;
|
|||
|
|
using std::move_iterator;
|
|||
|
|
using std::make_move_iterator;
|
|||
|
|
using std::back_insert_iterator;
|
|||
|
|
using std::back_inserter;
|
|||
|
|
using std::front_insert_iterator;
|
|||
|
|
using std::front_inserter;
|
|||
|
|
using std::insert_iterator;
|
|||
|
|
using std::inserter;
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
#include <string>//<2F>ַ<EFBFBD><D6B7><EFBFBD>
|
|||
|
|
using std::string;
|
|||
|
|
using std::wstring;
|
|||
|
|
using std::u16string;
|
|||
|
|
using std::u32string;
|
|||
|
|
#include <vector>//<2F><><EFBFBD><EFBFBD>
|
|||
|
|
using std::vector;
|
|||
|
|
#include <array>//<2F><><EFBFBD><EFBFBD>
|
|||
|
|
using std::array;
|
|||
|
|
#include <deque>//˫<><CBAB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
using std::deque;
|
|||
|
|
#include <list>//<2F><><EFBFBD><EFBFBD>
|
|||
|
|
using std::list;
|
|||
|
|
#include <set>//<2F>ȶ<EFBFBD><C8B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
//using std::set;
|
|||
|
|
using std::multiset;
|
|||
|
|
#include <map>//<2F>ȶ<EFBFBD><C8B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
//using std::map;
|
|||
|
|
using std::multimap;
|
|||
|
|
#include <unordered_set>//<2F><>ϣ<EFBFBD><CFA3>
|
|||
|
|
using std::unordered_set;
|
|||
|
|
using std::unordered_multiset;
|
|||
|
|
#include <unordered_map>//<2F><>ϣ<EFBFBD><CFA3><EFBFBD><EFBFBD>
|
|||
|
|
using std::unordered_map;
|
|||
|
|
using std::unordered_multimap;
|
|||
|
|
#include <queue>//<2F><><EFBFBD><EFBFBD>
|
|||
|
|
using std::priority_queue;
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
#include <memory>//<2F>ڴ<EFBFBD>
|
|||
|
|
using std::shared_ptr;
|
|||
|
|
using std::make_shared;
|
|||
|
|
using std::unique_ptr;
|
|||
|
|
//using std::make_unique;
|
|||
|
|
#include <exception>//<2F>쳣
|
|||
|
|
using std::exception;
|
|||
|
|
#include <stdexcept>//<2F><><EFBFBD><EFBFBD><EFBFBD>쳣
|
|||
|
|
using std::runtime_error;
|
|||
|
|
#include <random>//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
using std::default_random_engine;
|
|||
|
|
using std::mt19937;
|
|||
|
|
using std::mt19937_64;
|
|||
|
|
using std::random_device;
|
|||
|
|
using std::uniform_int_distribution;
|
|||
|
|
using std::uniform_real_distribution;
|
|||
|
|
using std::discrete_distribution;
|
|||
|
|
#include <ratio>//<2F><><EFBFBD><EFBFBD>
|
|||
|
|
using std::ratio;
|
|||
|
|
#include <complex>//<2F><><EFBFBD><EFBFBD>
|
|||
|
|
using std::complex;
|
|||
|
|
#include <regex>//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ
|
|||
|
|
using std::regex;
|
|||
|
|
using std::wregex;
|
|||
|
|
using std::regex_error;
|
|||
|
|
using std::cmatch;
|
|||
|
|
using std::smatch;
|
|||
|
|
using std::wcmatch;
|
|||
|
|
using std::wsmatch;
|
|||
|
|
using std::cregex_iterator;
|
|||
|
|
using std::sregex_iterator;
|
|||
|
|
using std::wcregex_iterator;
|
|||
|
|
using std::wsregex_iterator;
|
|||
|
|
using std::csub_match;
|
|||
|
|
using std::ssub_match;
|
|||
|
|
using std::wcsub_match;
|
|||
|
|
using std::wssub_match;
|
|||
|
|
|
|||
|
|
//<2F><>ƽ̨<C6BD><CCA8><EFBFBD><EFBFBD>
|
|||
|
|
#include <locale>//<2F><><EFBFBD>ػ<EFBFBD>
|
|||
|
|
#include <chrono>//ʱ<><CAB1>
|
|||
|
|
using std::chrono::time_point;
|
|||
|
|
using std::chrono::time_point_cast;
|
|||
|
|
using std::chrono::duration;
|
|||
|
|
using std::chrono::duration_cast;
|
|||
|
|
using std::chrono::system_clock;
|
|||
|
|
using std::chrono::steady_clock;
|
|||
|
|
namespace chrono = std::chrono;
|
|||
|
|
#include <thread>//<2F>߳<EFBFBD>
|
|||
|
|
using std::thread;
|
|||
|
|
namespace this_thread = std::this_thread;
|
|||
|
|
#include <mutex>//<2F><><EFBFBD><EFBFBD>
|
|||
|
|
using std::mutex;
|
|||
|
|
using std::timed_mutex;
|
|||
|
|
using std::recursive_mutex;
|
|||
|
|
using std::recursive_timed_mutex;
|
|||
|
|
using std::lock_guard;
|
|||
|
|
using std::unique_lock;
|
|||
|
|
using std::defer_lock;
|
|||
|
|
using std::try_to_lock;
|
|||
|
|
using std::adopt_lock;
|
|||
|
|
using std::once_flag;
|
|||
|
|
#include <condition_variable>//<2F>߳<EFBFBD>ͬ<EFBFBD><CDAC>
|
|||
|
|
using std::condition_variable;
|
|||
|
|
using std::condition_variable_any;
|
|||
|
|
using std::cv_status;
|
|||
|
|
#include <future>//<2F>ڻ<EFBFBD>
|
|||
|
|
using std::future;
|
|||
|
|
using std::shared_future;
|
|||
|
|
#include <atomic>//ԭ<>ӿ<EFBFBD>
|
|||
|
|
using std::atomic;
|
|||
|
|
using std::atomic_flag;
|
|||
|
|
using std::memory_order;
|
|||
|
|
using std::memory_order_relaxed;
|
|||
|
|
using std::memory_order_consume;
|
|||
|
|
using std::memory_order_acquire;
|
|||
|
|
using std::memory_order_release;
|
|||
|
|
using std::memory_order_acq_rel;
|
|||
|
|
using std::memory_order_seq_cst;
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><D7BC><EFBFBD><EFBFBD>չ
|
|||
|
|
#include "UsedMacro.h"
|
|||
|
|
#include "TypeExtend.h"
|
|||
|
|
#include "IoOperator.h"
|
|||
|
|
#include "StruAndAlgo.h"
|