随笔分类 - C/CPP学习
摘要:1. 避免嵌套锁, 如果每个线程都只占有一个锁, 则可以很大程度上避免死锁。其死锁的情况是, 线程 1 依次获得 A 对象和 B 对象的锁, 然后决定等另一个线程的信号再继续, 从而先释放了 B 对象的的锁。可是线程 2 需要同时拥有对象 A 和对象 B 的锁才能向线程 1 发信号。从而导致, 线程...
阅读全文
摘要:int64_t GetHighest (int64_t num) //原谅我的渣英文{ if(num = 10) { num /= 10; } return num;}方法来源
阅读全文
摘要:C++ 吧里看到有人求助, 说是想写点代码求一个整数的位数, 以下是我的解决方法:int64_t RecursionIter (const int64_t& num, const int64_t& result){ if (num / 10 == ...
阅读全文
摘要:我们使用 Windows 函数 MultiByteToWideChar 将多字节字符串转换为宽字符串。如下所示:int MultiByteToWideChar( UINT uCodePage, //标识了与多字节字符关联的一个代码页值 DWORD dwFla...
阅读全文
摘要:1. 开始将文本字符串想象为字符的数组,而不是char或字节的数组。2. 为文本字符和字符串使用泛型(比如TCHAR/PTSTR)。3. 为字节、字节指针和数据缓冲区使用显式数据类型(BYTE和PBYTE) 。4. 为literal字符和字符串使用TEXT或_T宏,但为了保持一致性和更好的可读性,请...
阅读全文
摘要:stack 不是一种容器, 而是一种适配器, 它的实现大概是这样的:template >class stack{public: explicit stack (const Container&); explicit stack (Container&& = Container ())...
阅读全文
摘要:如题, C++ concurrency in action 笔记之一。
阅读全文
摘要:#include #include #include #include using namespace std;template struct accumulate_block{ void operator ()(Iterator first, Iterator last, T &result) ...
阅读全文
摘要:是这样, 要求输入一些数字, 数字间用空格分隔, 敲击回车后, 会显示当前输入数字累计的和, 直到程序检测到输入的数字为 0 后, 才会在输出最终结果后结束。这段代码中 cin 和 printf 混用了, 不知好不好, 虽然 boost 的 format 也能实现相似的功能, 但是考虑到程序的一般性...
阅读全文
摘要:原文内容在 int32_t 等的使用
阅读全文
摘要:知乎上看到的, 说是有这么一个数列:1 - 2 + 3 - 4 + 5 ...... 100让求最终的和。我觉得如果单说这个数列的话, 有点简单啊:int f (int n){ return n % 2 == 0 ? -( n / 2) : (n + ...
阅读全文
摘要:现有面值分别为 1分, 5分, 10分, 25分, 50分 的五种硬币, 问一枚一块钱的硬币换成这几种硬币有几种换法。先要明确一个事实, 总的换法一定等于 使用某一种硬币的换法和不使用某一种硬币的换法之和。前者需要先将总数减去一定使用的那种硬币的面值, 再来讨论剩下的兑换方法。后者需要先将硬币的种类...
阅读全文
摘要:这个问题原本是 C++ 吧里有人问的, 我当时就立刻动手解决了, 结果后来才发现, STL 里已经有了对应的泛型算法了......看来我对 STL 知道的还是太少, 贴一下我当时完成的方法:set VecToSet (const vector &vec){ set tmp_set (vec.c...
阅读全文
摘要:#include #include #include #include vector GetStr (const wstring &s){ locale china ("chs"); wistringstream line (s); wstring word; vector ...
阅读全文
摘要:1. 当函数的形参类型为 string, 而传入的参数类型为 char[] 时, 需要在线程函数中转型, 如此可以避免空悬指针。如:void f(int, std::string const&);void oops(int some_parm){ char buffer[100]; sp...
阅读全文
摘要:英语不好, 见谅。 1 float myRound (float src, int idx) 2 { 3 //move idx numbers right of the point 4 //to the left 5 for (int i = idx; i--;) { 6 ...
阅读全文
摘要:1. forward 不支持初始化列表, 或者说, forward 无法推导多个参数的集合.2. 一些编译器对于 static const val 的态度是直接替换, 如 static const val = 7; 那么, 对于函数 Func(val) 就等于 Func(7). 可是如果未定义的 s...
阅读全文
摘要:1. 当没有移动操作可使用时. 如果类的设计者把一个类的移动拷贝和移动运算符重载都声明为 delete, 那么你使用的所谓 "移动 构造函数函数/运算符" 实际上还是拷贝运算符.2. 当移动没有拷贝块时有些情况下, 移动并不比拷贝快, 比如 面对 small string optimization ...
阅读全文
浙公网安备 33010602011771号