当前位置: 首页 > news >正文

中小企业网站建设开题报告网页设计代码的基本格式

中小企业网站建设开题报告,网页设计代码的基本格式,深圳效果图制作公司,云存储能用来做网站吗在写一些大型项目的过程中经常需要一些工具函数#xff0c;例如获取随机数、计时器、打印函数、重要常量#xff08;如最大值#xff09;、信号与槽等#xff0c;由于每一个工程都自己手动实现一个实在是太傻#xff0c;我将其总结放入一个文件中。 utils.h // Copyright…在写一些大型项目的过程中经常需要一些工具函数例如获取随机数、计时器、打印函数、重要常量如最大值、信号与槽等由于每一个工程都自己手动实现一个实在是太傻我将其总结放入一个文件中。 utils.h // Copyright(C), Edward-Elric233 // Author: Edward-Elric233 // Version: 1.0 // Date: 2022/6/27 // Description: #ifndef UTILS_H #define UTILS_H#include json.hpp #include iostream #include random #include chrono #include fstream #include memory #include mutex #include unordered_map #include functionalnamespace edward {constexpr int INF 0x3f3f3f3f;//extern std::ofstream ofs;inline void print() {std::cout \n; // ofs \n; } templatetypename T, typename... Args void print(T first, Args... args) {std::cout first ; // ofs first ;print(std::forwardArgs(args)...); }templatetypename Iter void printArr(Iter begin, Iter end) {while (begin ! end) {std::cout *begin ;}std::cout \n; }templatetypename T1, typename T2 std::ostream operator(std::ostream os, const std::pairT1, T2 pr) {os pr.first pr.second;return os; }templatetypename Container void printArr(const Container container) {for (auto x : container) {std::cout x ;}std::cout \n; }class Random { public:// random number generator.static std::mt19937 pseudoRandNumGen;static void initRand(int seed) { pseudoRandNumGen std::mt19937(seed); } //设置随机数种子static int fastRand(int lb, int ub) { return (pseudoRandNumGen() % (ub - lb)) lb; }static int fastRand(int ub) { return pseudoRandNumGen() % ub; }static int rand(int lb, int ub) { return std::uniform_int_distributionint(lb, ub - 1)(pseudoRandNumGen); }static int rand(int ub) { return std::uniform_int_distributionint(0, ub - 1)(pseudoRandNumGen); } };class Timer {std::chrono::time_pointstd::chrono::system_clock timePoint_; public:Timer(): timePoint_(std::chrono::system_clock::now()) {}Timer(const Timer) delete;~Timer() default;void operator() (const std::string msg) {auto duration std::chrono::system_clock::now() - timePoint_;print(msg, static_castdouble(duration.count()) / decltype(duration)::period::den, s);}void reset() {timePoint_ std::chrono::system_clock::now();}void operator() (nlohmann::json arr) {auto duration std::chrono::system_clock::now() - timePoint_;arr.push_back(duration.count());}};using Slot std::shared_ptrvoid;//前置声明 templatetypename Signature class Signal; templatetypename Ret, typename... Args class SignalRet(Args...);namespace detail {//前置声明templatetypename Callback class SlotImpl;templatetypename Callbackclass SignalImpl {public:using SlotList std::unordered_mapSlotImplCallback *, std::weak_ptrSlotImplCallback;SignalImpl(): slots_(new SlotList), mutex_() {}~SignalImpl() {}//只能在加锁后使用void cowWithLock() {if (!slots_.unique()) {slots_.reset(new SlotList(*slots_));}}//添加槽函数void add(const std::shared_ptrSlotImplCallback slot) {std::lock_guardstd::mutex lockGuard(mutex_);cowWithLock();slots_-insert({slot.get(), slot});}//供SlotImpl调用删除槽函数void remove(SlotImplCallback *slot) {std::lock_guardstd::mutex lockGuard(mutex_);cowWithLock();slots_-erase(slot);}std::shared_ptrSlotList getSlotList() {std::lock_guardstd::mutex lockGuard(mutex_);return slots_;}private:std::mutex mutex_;//保存SlotImpl的weak_ptr//之所以不保存SlotList而是保存其shared_ptr是为了实现COWstd::shared_ptrSlotList slots_;};templatetypename Callbackclass SlotImpl {public:SlotImpl(Callback cb, const std::shared_ptrSignalImplCallback signal): cb_(cb), signal_(signal) {}~SlotImpl() {auto signal signal_.lock();if (signal) {signal-remove(this);}}Callback cb_;private://保存SignalImpl的weak_ptrstd::weak_ptrSignalImplCallback signal_;}; }templatetypename Ret, typename... Args class SignalRet(Args...) { public:using Callback std::functionRet(Args...);using SignalImpl detail::SignalImplCallback;using SlotImpl detail::SlotImplCallback;Signal(): impl_(new SignalImpl) {}~Signal() {}/*!* 添加槽函数* param cb 槽函数* return 需要保存这个智能指针否则会自动从槽函数列表中删除*/templatetypename FuncSlot connect(Func cb) {std::shared_ptrSlotImpl slot(new SlotImpl(std::forwardFunc(cb), impl_));impl_-add(slot);return slot;}templatetypename ...ARGSvoid operator() (ARGS... args) {auto slots impl_-getSlotList();//使用引用避免智能指针的解引用auto s *slots;for (auto [pSlotImpl, pWkSlotImpl] : s) {auto pShrSlotImpl pWkSlotImpl.lock();if (pShrSlotImpl) {pShrSlotImpl-cb_(std::forwardARGS(args)...);}}}private://保存shared_ptr的原因是需要传递给SlotImpl在SlotImpl析构的时候会清除自己const std::shared_ptrSignalImpl impl_; };}#endif //UTILS_H utils.cpp // Copyright(C), Edward-Elric233 // Author: Edward-Elric233 // Version: 1.0 // Date: 2022/6/27 // Description: #include utils.hnamespace edward {std::mt19937 Random::pseudoRandNumGen(std::chrono::system_clock::now().time_since_epoch().count()); //默认使用当下时间戳初始化随机数种子精确到纳秒//std::ofstream ofs(../test/debug.txt);}
http://www.huolong8.cn/news/177445/

相关文章:

  • 孝感网站开发的公司微视看视频领红包下载安装
  • asp 网站路径泄露 解决深圳信科做网站
  • 外企网站建设公司秦皇岛市教育局官网
  • 江苏省城乡住房建设厅网站网络品牌营销推广
  • 档案网站建设优秀代表网站建设:宏智网络科技
  • 国内网站建设 必须实名认证3d建模教程
  • 东莞服装网站建设个人主页免费
  • 福州商城网站破解织梦做的网站
  • 潍坊兆通网站建设北京快速建站制作公司
  • 重庆网站seo建设哪家好惠阳做网站
  • 网站建设的空间是什么西安企业建站费用
  • 网站建设的教学视频wordpress最大文件
  • 婚纱网站怎么做seo网站微信推广方案
  • 郑州七七网站建设做设计网站的工作内容
  • 网站seo公司哪家好全屋定制设计师培训
  • 学校网站怎么做贵阳网站建设方案维护
  • 晋城建设公司网站谷歌推广效果好吗
  • 在线图片编辑器官网网络优化分为
  • 广东省建设网站天津市做网站的公司有哪些
  • 网站建设的重点是什么漂亮的flash网站
  • 学网站建设的好处东莞证券
  • 武冈网站建设哪家好成品网站 免费试用
  • 邯郸网站建设包括哪些wordpress 国内 优化
  • 网站推广专家东莞网站平台后缀
  • 怎样建设个人影视网站市场监督管理局查询系统
  • php做电商网站开题报告做网站是什么公司
  • 房山手机网站建设威海网站制作怎么样
  • 网站前端和后端连云港市网站优化
  • 山西省建设监理协会网站企业网站互动交流模块
  • 提供邢台网站优化邯郸网站优化