https://www.zhihu.com/topic/19726035/top-answers?page=1
GCC 4.9的C++11 <regex>是我写的。没抄boost。 我没细致地测过速度,但是仅仅是个简单的dfs实现,速度应当和boost的差不多。有一套备选实现是Thompson NFA(bfs),禁止back reference,保证多项式级别复杂度(具体来说是O(n_captures * (regex_string.size…
显示全部
Tinro 搜索引擎、个性化推荐、计算广告 || 高铁…
右值引用是C++11中最重要的新特性之一,它解决了C++中大量的历史遗留问题,使C++标准库的实现在多种场景下消除了不必要的额外开销(如std::vector, std::string),也使得另外一些标准库(如std::unique_ptr, std::function)成为可能。即使你并不直接使用右…
显示全部
auto很好,即使可能有些缺点,也是瑕不掩瑜。 对于auto而言,其在于type deduce,那么第一点,它不会允许没有初始化值的声明,如: int x;auto y; // error 这是很好的,有些开发者总是会直接用一些没有初始化的变量,然后后面运行结果不对。而运行的错误…
显示全部
在此翻译和总结了3篇本引用文献中的部分内容,抛砖引玉。下文大致分三部分:先介绍了内存系统coherence和consistency的行为表现, 并指出达成coherent的三个条件。其次,将内存一致性模型分为顺序一致性模型(sequential consistency model)和松弛一致性模型(…
显示全部
往大了说就是C++已经过了巅峰期。新的标准就像Fortran 90 --- 这个语言在努力跟上时代,但是使用者的平均年龄在变大,项目都巨大且有年头了,新项目越来越少了。 这样的社区自然越来越难以接纳新东西。 另一方面,C++的语言机制大都是leaky abstraction,范…
显示全部
徐辰 C++ is nothing about OOP
他说的就是,C++是一种同时具有高级抽象和低级抽象的语言。反正大多数流行的语言都是没有低级抽象的,你们用C++的时候为啥不先从高级抽象开始学习,还能白白获得性能加成。等到熟练的时候,再去管低级抽象的事情,事半功倍,学起来快,开发起来也快。 更重…
显示全部
只说点个人经验/吐槽,不具普适代表性。 新C++规范是让这门语言越来越便利了,特别是开发上层应用的时候(以及为这些上层应用开发某些底层库的时候。 而开发上层应用的空间现在有许多语言可以选择。有Java和C#这俩主流的托管语言,以及Python / Ruby / Java…
显示全部
知乎用户 程序分析,中间码
从一个程序员角度的 Take away: 虽然是六种类型,但是理解了四种同步的情形基本就差不多了。 1. Relaxed ordering: 在单个线程内,所有原子操作是顺序进行的。按照什么顺序?基本上就是代码顺序(sequenced-before)。这就是唯一的限制了!两个来自不同线程…
显示全部
这是刚到一家公司很容易犯的一个毛病. 尤其是那种对新技术很热衷, 很有学习热情的初学者. 我建议你老老实实遵照公司既有代码的风格, 别因为你一人之好, 就开始怂恿主管. 这会显得很幼稚. 如果是一个新的项目, 产品, 或者试水的 demo, 你提出这样的建议无可…
显示全部
知乎用户 PhD, CUHK
1. 结论 这个的确是MinGW32的问题。更具体地说,最大的原因是,根据有没有-std=c++11,程序调用的printf的实现是不一样的。当加上-std=c++11的时候,printf用的是MinGW32自己的实现;当没有-std=c++11的时候,printf用的是C Run-time Library (CRT)的实现…
显示全部
不值得花时间的有: become a language lawyer iostream manipulators auto_ptr valarray exception specifications multiple / virtual inherence obsolete library like bind_1st, etc.
显示全部
对于修饰Object来说, const并未区分出编译期常量和运行期常量 constexpr限定在了编译期常量 然后我想对修饰函数多说两句,那就是constexpr修饰的函数,返回值不一定是编译期常量。#It is not a bug, it is a feature.# #include <iostream>#include <arra…
显示全部
曾经有人“精简”我的代码,觉得我的所有对象都继承的Object基类没有用,删掉了,然后大面积内存泄露。他自己没查出来,来问我怎么办。后来我发现他使用的类都没有虚析构函数(当然了,因为我在Object写了,其它类就都不需要声明虚析构函数了),然后用智能…
显示全部
这个问题么,分几个方面。 const是表明这个值是constant的,但是
不必 在编译期确定,然而数组的大小是需要在编译期确定的,如: int i; // not constantconst int size = i; // fine!int arr[size]; // Error!然而对于constexpr,则表明这个值不仅是const…
显示全部
能定义不止一次的好处是方便你放到头文件里,放到头文件里的好处是每个include这个头文件的.c文件都能看到函数体,看到函数体的好处是编译器可以内联。内联的好处是代码变快了。另外,所有函数体定义必须一模一样,不然出了问题概不负责。constexpr自带inli…
显示全部
std::move是无条件的转为右值引用,而std::forward是有条件的转为右值引用,更准确的说叫做Perfect forwarding(完美转发),而std::forward里面蕴含着的条件则是Reference Collapsing(引用折叠)。 对于std::move来说,其boost的实现基本上等价于如下形式…
显示全部
描述
C++11 ,先前被称作
C++0x ,即ISO/IEC 14882:2011,是
C++编程语言 的一个标准