C/C++
taodm
这个作者很懒,什么都没留下…
展开
-
C++实现flatten:扁平化容器的容器的容器。。。
zip、map/reduce、flatten是比较有意思的通用算法。zip在boost::iterator里有了,map/reduce是用transfom、accumulate、inner_product实现的。flatten就没找到了,那就造个吧:template<typename T, typename C>constexpr void do_flatten(const C & c, T & ret) { for (const auto & x原创 2021-03-15 22:50:54 · 1008 阅读 · 0 评论 -
JSON for Modern C++的dump函数的一个小修改:纯数值内容放在同一行
对于[1,2,3...]这样的纯数值json,使用dump(4)输出会占用非常多的行:[ 1, 2, 3,。。。]我个人喜欢对这样的纯数值,只用一行,所以小改了一下源代码:void dump(const BasicJsonType& val, const bool pretty_print, const bool ensure_ascii, const unsigned int indent_step, const unsigne原创 2021-01-16 10:31:31 · 604 阅读 · 0 评论 -
记录:C++ 编译期静态反射
如何优雅地实现 C++ 编译期静态反射https://mp.weixin.qq.com/s/y1GULGBR-ktn-2N1fJ8CDw文章讲得不错。提取一下重点:使用T t = {。。。};语法可以提取出结构体T的成员数量。原理:当{。。。}里面给的初始化值个数小于等于T的成员数量时,初始化语法成立。 如果初始化值个数超过T的成员数量时,初始化语法不成立,会编译报错。据此,使用SFINAE机制就可以获得成员数量啦。不过,这个文章还不是最优解。BOOST1.75刚...原创 2021-01-04 11:47:39 · 1091 阅读 · 0 评论 -
C++实现enum转字符串,支持enum的指定值语法
C/C++的enum,无法直接转换到字符串,比如 enum FRUIT {apple, grape=10, orange};,永远只有0、10、11,无法得到能直观理解的“appl”、“grape”、“orange”了。Java语言就能在打印枚举值时打印出字符串。cout << FRUIT(10) 我们希望输出的是grape,而不是10直到C++2020标准都出台了,也没听说C/C++给出标准解决方案。而这个需求其实一直非常强烈。常见的解决方案:1)做一个class,它有一.原创 2020-12-05 11:23:38 · 3680 阅读 · 0 评论 -
C++安全的窄转换narrow_cast的新语法实现
//利用了C++新语法:构造自动推导模板类型template<typename SOURCE, typename = std::enable_if_t<std::is_arithmetic<SOURCE>::value>> struct narrow_cast{ SOURCE source; narrow_cast(SOURCE s...原创 2019-12-24 11:21:46 · 2225 阅读 · 1 评论 -
windows下mingw32使用tcmalloc
使用的mingw: i686-8.1.0-release-posix-dwarf-rt_v6-rev0 tcmalloc: gperftools2.7覆盖gperftools2.5 msys2: 20180531,这个看起来不重要1)github上,官方的gperftools已经是2.7,但是没有带configure文件,github上还有...原创 2019-12-23 11:39:28 · 720 阅读 · 0 评论 -
编译宏控过滤和宏替换工具,还是放出来吧,也许对一些人有点用。
http://download.csdn.net/detail/taodm/5075958原创 2013-02-20 22:50:28 · 1747 阅读 · 1 评论 -
用正则判断配对的“()”?没问题,一行搞定
boost::regex 好像要1.5x吧,扩展perl语法(?(DEFINE)(?<parentheses>(?>\ ((?:[^()'"]|(?&parentheses))*\ ))))\ ( 、 \ )间的空格自己去掉一下。以后直接用(?&parentheses)就行。什么?''和“”里的()怎么办?(?(DEFINE)(?<cha...原创 2018-12-18 10:19:14 · 307 阅读 · 0 评论 -
boost::coroutine2用mingw 32编译,出forced_unwind异常的解决
一句话,使用dwarf版本,不要用sjlj版本。原创 2019-02-23 15:08:09 · 418 阅读 · 0 评论