09 2015 档案
摘要:templateclass LockFreeStack{private: struct Node { std::shared_ptr data; Node* next; Node(T const& value): ...
阅读全文
摘要:templateclass ThreadsafeList{ struct Node { std::mutex m; std::shared_ptr data; std::unique_ptr next; Node(): ...
阅读全文
摘要:template>class ThreadsafeLookupTable{private: class BucketType { private: typedef std::pair bucketValue; typedef std::list buck...
阅读全文
摘要:倒是很简单啊,我是先用 brew istall 安装的 boost,Qt creator 的版本是 3.4.2然后右键项目,选择添加库,接着在相应的文件夹里选择相应的后缀为 .a 的库文件,.pro 中就会自动配置。所以这就完了吗?当然不,我这里报错:can't map file crrno=22 ...
阅读全文
摘要:templateclass ThreadsafeQueue{private: struct Node { std::shared_ptr data; std::unique_ptr next; }; std::unique_...
阅读全文
摘要:上一篇文章里说到了一个极简易队列的实现,然而它对于并发存在一个问题,就是当多个或者说就是两个线程并发地访问队列,分别调用 push() 与 tryPop() 时,可能就会导致数据争用或者死锁。以下是一种思路,通过分离数据允许并发。其大致思路是预先分配一个不储存任何数据的结点占位,当 push() 进...
阅读全文
摘要:templateclass Queue{private: struct Node { T data; std::unique_ptr next = nullptr; Node(T _data): ...
阅读全文
摘要:学的还是不满意,对于智能指针还是有几个误区:1. 对于 unique_ptr sp1,觉得在 auto sp2 = std::move(sp1) 之后,其所管理的指针的资源会因为 sp1 的析构而导致其释放,后来发现并不是,move 操作只是管理权的移交,所以其存储的裸指针所分配的资源并不会被释放。...
阅读全文
摘要:templateclass ThreadsafeQueue{private: mutable std::mutex _mut; std::queue> _dataQueue; std::condition_variable _dataCo...
阅读全文
摘要:memory_order_release 意为只有前面的语句都执行完后,这条语句才会执行。memory_order_acquire 意为只有这条语句执行完之后,后面的语句才会执行。memory_order_consume 和 memory_order_acquire 差不多,只是memory_ord...
阅读全文
摘要:void printTriangle(int32_t layerNum){ if (layerNum < 1){ return; } for (int32_t currentNum = 1, spaceWide = layerNum - 1; ...
阅读全文
摘要:想了很久啊,看了标签是 DP,所以考虑之后自己琢磨出了个策略,结果还是不对啊,各种 test case 过不去。后来才发现这其实还可以用更为简单的方法——数学定理对没错,所以说世界上只有两种程序员:懂数学的和不懂数学的。// 四平方定理,又称 Lagrange's four-square theor...
阅读全文
摘要:这个问题存很有意思,因为用到了一个性质,就是: 设正整数 i, n。 若 i 是 n 的约数,那么 n / i 也必是 n 的约数。由此可见,约数都是成对出现的,所以只需要枚举到 √n 就可以,因为大于 √n 的那些约数就是前面提到的 n / i。所以,只需要枚举 √n 之前的数,并在统计后乘 2 ...
阅读全文
摘要:原问题是,生产线中出现了一个残次品,导致在那之后的产品都是残次品,要求找出第一个残次品。问题中还给出了用于判断的 API isBadVersion(version) 我把问题简化了,理解为在一个数组中,前一段是正数,后一段是负数,求第一个负数的位置。奇怪的是我在 Xcode 上运行好几种情况都是成功...
阅读全文
摘要:比如一个 [3, 1, 5, 10] 的树,设其根结点为 root, 那么对于函数hasPathSum(root, 18) 的返回值就是 true。题目列出的知识点是深度优先搜索,可是我刚明白一点动态规划,所以我考虑的是,符合条件的树枝去掉叶子,剩下节点的和必然等于给定值减去叶子节点。bool ha...
阅读全文
摘要:本来是打算直接用 bitset 解决问题的,转成二进制再转成十进制,相加后再通过逆运算求得最终的字符串。然而却存在一个问题,就是溢出,当给出的二进制过于大的时候,相加就解决不了了,因此就要按照字符串来处理。以下是我的解决方案,虽说很丑,然而速度还行吧:string addBinary(string ...
阅读全文
摘要:因为每一行都是根据其上一行推出来的,所以说我只需要上一行的信息。vector getRow(int rowIndex) { if (rowIndex (); } vector result(rowIndex + 1); result[0] = 1; result[row...
阅读全文
摘要:我一只觉得是不是一个深度优先搜索啥的;然后一看是二叉树,立刻脑子就往递归去了,回溯?让叶子往根回溯?通过推迟求值来得到叶子再回溯,这就是我一开始的想法。然而却毫无进展,唉,于是我就用了一个很笨的方法,就是每遇到一个右孩子,就复制分叉前的树枝存入容器里,存入的位置由 index 作为其 id为了不会存...
阅读全文
浙公网安备 33010602011771号