346得票2回答
如何在现代C++中实现经典排序算法?

C++标准库中的std::sort算法(以及其姊妹算法std::partial_sort和std::nth_element)在大多数实现中是一种复杂的混合排序算法,由更基本的排序算法组成,如选择排序、插入排序、快速排序、归并排序或堆排序。 这里和其他网站(如https://coderevie...

223得票8回答
Lambda捕获作为const引用?

在lambda表达式中,是否可以使用const引用进行捕获? 例如,我希望下面的赋值会失败:#include <algorithm> #include <string> using namespace std; int main() { string str...

213得票2回答
decltype(auto)的一些用途是什么?

在C++14中引入了decltype(auto)这个习语。 通常它的用法是允许auto声明在给定表达式上使用decltype规则。 在寻找这个习语的“好”用法的例子时,我只能想到以下类似的事情(由Scott Meyers提供),即用于函数的返回类型推断。 template<type...

213得票2回答
现代C++能够免费提高性能吗?

有时候人们声称,即使只是编译 C++98 代码,C++11/14 也能给你带来性能提升。这种说法通常是基于移动语义的,因为在某些情况下,右值构造函数会被自动生成或成为 STL 的一部分。现在我想知道这些情况之前是否已经被 RVO 或类似的编译器优化处理过了。 那么我的问题是,如果您能给我一个...

195得票4回答
std::make_unique和使用new创建std::unique_ptr之间的区别

std::make_unique是否像std::make_shared一样有任何效率优势? 与手动构造std::unique_ptr相比:std::make_unique<int>(1); // vs std::unique_ptr<int>(new ...

195得票6回答
C++11、14、17或20是否引入了一个标准常数来表示圆周率?

C和C++中关于数字π的问题相当愚蠢。据我所知,math.h中定义的M_PI在任何标准中都不是必需的。 新的C++标准库引入了许多复杂的数学函数,包括双曲函数、std::hermite和std::cyl_bessel_i等,还有各种随机数生成器等等。 '新'标准是否引入了数字π的常量?如果没有...

191得票2回答
使用std::make_unique相比于new运算符的优势

使用std::make_unique初始化std::unique_ptr相比使用new运算符有什么优势? 换句话说,为什么std::unique_ptr<SomeObject> a = std::make_unique(SomeObject(...)) 比做更好。std::uni...

182得票3回答
我们如何使用void_t进行SFINAE?

我观看了Walter Brown在Cppcon14上关于现代模板编程的演讲(第一部分,第二部分),他在演讲中介绍了他的void_t SFINAE技术。 示例: 给定一个简单的变量模板,如果所有的模板参数都是良好形式,则评估为void: template< class ... >...

180得票7回答
何时应该使用C++14的自动返回类型推断?

随着GCC 4.8.0版本的发布,我们拥有了支持自动返回类型推断的编译器,这是C++14的一部分。使用-std=c++1y,我可以做到这一点: auto foo() { //deduced to be int return 5; } 我的问题是:什么时候应该使用这个功能?什么时候...

159得票2回答
#pragma once是C++11标准的一部分吗?

传统上,在C++中避免多个头文件包含的标准和便携方法是使用预处理器指令方案,也称为宏保护方案(见下面的代码片段),其中包括#ifndef-#define-#endif。请注意,保留HTML标签。 #ifndef MY_HEADER_HPP #define MY_HEADER_HPP ... ...