glaumar@home:~$

  • 浮点数比较

    计算机中的浮点数并不精确, 不能直接用 == 比较两个浮点数是否相等, 应在可接受的范围定义一个比较小的数 epsilon , 两个浮点数之差小于 epsilon 即认为他们相等 C #include <float.h> #include <math.h> #include <stdbool.h> bool almost_equal(const double a, const double b){ return (fabs(a - b) < DBL_EPSILON); } C++ #include <cmath> #include <limits> bool almost_equal(const double a, const double b){ return (fabs(a - b) < std::numeric_limits<double>::epsilon()); }...

  • this_thread::sleep_for()和chrono::duration, ratio;

    想着找个跨平台的 sleep() , 看到了标准库里的 sleep_for() , 用起来不难, 但涉及到一些没见过的类 TL;DR C++11 using namespace std; this_thread::sleep_for(chrono::milliseconds(500)); this_thread::sleep_for(chrono::seconds(2)); this_thread::sleep_for(chrono::minutes(1)); C++14 using namespace std; using namespace std::chrono_literals; this_thread::sleep_for(500ms); this_thread::sleep_for(2s); this_thread::sleep_for(1min); std::this_thread::sleep_for header: <thread> template< class Rep, class Period > void sleep_for( const std::chrono::duration<Rep, Period>& sleep_duration ); 阻塞当前线程至少一个 sleep_duration (可能会由于调度或者资源竞争产生延迟) 显然我们需要构造一个 duration 对象来表示要阻塞的时间 std::chrono::duration header:...

  • 笔记:QML实现图片圆角

    QML中的 Image 类型没有 radius 属性,不像 Rectangle 可以自定义圆角,借助 OpacityMask (需要导入 QtGraphicalEffects )把他们结合到一起即可实现图片圆角 import QtQuick 2.15 import QtQuick.Controls 2.15 import QtGraphicalEffects 1.15 ApplicationWindow { id: window visible: true width: 640 height: 480 title: "rouned image" Image { id: img anchors.centerIn: parent width: 200 height: 200 source: "qrc:/avatar.png" layer.enabled: true layer.effect: OpacityMask {...

  • 笔记:Div+CSS实现文本居中左对齐

    <div style="text-align: center;"> <div style="display: inline-block; text-align: left;"> <p><b>学院:</b><u>信息科学与工程</u></p> <p><b>专业:</b><u>软件工程</u></p> <p><b>班级:</b><u>软件-3班</u></p> <p><b>姓名:</b><u>张三</u></p> </div> </div> 效果: 学院:信息科学与工程 专业:软件工程 班级:软件-3班 姓名:张三 参考: stack overflow - CSS: Center block, but align contents to the left

  • 使用STL生成随机数

    随机数种子 使用随机数引擎生成(伪)随机数前,我们通常需要传入一个种子以确保程序每次运行能生成不同的随机数 random_device 类可以使用系统提供的数据源,并返回一个真随机数(根据实现,如果数据源不可用也可能生成伪随机数),取值范围是[std::random_device::min() , std::random_device::max()] #include <iostream> #include <random> using namespace std; int main() { cout << "Max: " << std::random_device::max() <<endl; cout << "Min: " << std::random_device::min() <<endl; random_device rd; for (int n = 0; n < 8; ++n) { cout << rd() << endl; } } 输出:...

  • c++中++i和i++的区别

    1. 计算顺序不同 i++ 返回 i 本身,然后将 i 加一 ++i 将 i 加一,然后返回 i int i = 0; std::cout << i++ << " " << i; std::cout << std::endl; std::cout << ++i << " " << i; output: 0 1 2 2 2. 返回值性质不同 i++ 返回右值,++i 返回左值(百度百科关于左值和右值的词条) 所以 i++ = 3...

  • 笔记:非递归遍历二叉树

    二叉树的非递归遍历基于栈, 代码风格不像递归遍历那么简洁统一,不太好记,聊以备忘 代码来自 这篇文章,作者在文章中统一了三种非递归遍历的风格,对于前序和中序遍历我还是更喜欢传统的写法,后序遍历采用了文章作者的写法 非递归前序遍历 //非递归前序遍历 void preorderTraversal(TreeNode *root, vector<int> &path) { stack<TreeNode *> s; TreeNode *p = root; while(p != nullptr || !s.empty()) { while(p != nullptr) { path.push_back(p->val); s.push(p); p = p->left; } if(!s.empty()) { p = s.top(); s.pop(); p = p->right; } } } 非递归中序遍历 //非递归中序遍历 void...