前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C++ 动态新闻推送 第10期

C++ 动态新闻推送 第10期

作者头像
王很水
发布2021-08-31 17:39:33
4400
发布2021-08-31 17:39:33
举报

C++ 动态新闻推送 第10期

reddit/hackernews/lobsters/meetingcpp摘抄一些c++动态。

每周更新

周刊项目地址 github,在线地址

discord讨论群组 |飞书讨论群组|知乎专栏

欢迎投稿,推荐或自荐文章/软件/资源等,请提交 issue

祝大家五一节日快乐


资讯

编译器信息最新动态推荐关注hellogcc公众号

本周周报github直达

文章

讨论抛异常出二进制在不同编译器下的行为,以及链接不同的libstd 的行为,结果居然不一致。可以扩展一下眼界

首先功能和可能的实现可以看这个链接 从c++17开始支持,链接里的可能的实现是递归方案,讨论非递归方案

看代码

代码语言:javascript
复制
template<bool...> struct bool_pack{};

template<bool... Bs>
using conjunction = std::is_same<bool_pack<true,Bs...>, bool_pack<Bs..., true>>;

template <bool B>
using bool_constant = std::integral_constant<bool, B>; // redefining C++17 bool_constant helper

template<bool... Bs>
struct disjunction : bool_constant<!conjunction<!Bs...>::value>{};

很巧妙的利用is_same来推定true=B1=B2=…Bn=true,不用递归,但类型的判定由编译器来判定

讨论了两种场景对性能的影响

range for 如果你不需要index信息,range for生成的汇编更简单 更高效

vector先分配好空间再pushback比直接pushback要更高效

除法指令是慢的,优化除法指令的一个方法就是改写成乘法。作者写了个论文,讨论了一种数学场景,费马数除法,如何除更高效

其实就是这段代码

代码语言:javascript
复制
// computes n % 274177
uint64_t div1(uint64_t n) {
    return n % 274177;
}

// computes n % 274177
uint64_t div2(uint64_t n) {
    return (uint64_t( n * 67280421310721 ) 
              * __uint128_t(274177)) >> 64;
}

第二种写法更高效

视频

讨论了怎么用constexpr的std::vector 一种很猥琐的方式,一口气分配好,不传出来,在constexpr函数内部来处理

项目


看到这里或许你有建议或者疑问或者指出错误,请留言评论! 多谢! 你的评论非常重要!也可以帮忙点赞收藏转发!多谢支持!

本文永久链接

代码语言:txt
复制
     This site is open source. [Improve this page](https://github.com/wanghenshui/cppweeklynews/edit/dev/posts/010.md).
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • C++ 动态新闻推送 第10期
    • 资讯
      • 编译器信息最新动态推荐关注hellogcc公众号
    • 文章
      • 视频
        • 项目
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档