c++11相关内容

“最终”的目的是什么,关键字在C ++ 11中的函数?

C ++ 11中函数的 final 关键字的目的是什么?我理解它阻止函数覆盖的派生类,但如果是这样的情况,那么是不是足够声明为非虚拟你的 final 函数?还有另外一件事我在这里缺少? 解决方案 你缺少什么,因为idljarn在注释中已经提到的是if你是从基类中重写一个函数,那么你不能将它标记为非虚函数: struct base { virtual void f(); }; ..
发布时间:2016-10-13 10:09:43 C/C++开发

do c ++ 11 lambdas捕获他们不使用的变量?

当我使用 [=] 来表示我想要所有的局部变量被一个lambda捕获的值,将导致 all 所使用的所有局部变量因此,例如,如果我有: 矢量 my_huge_vector(100000); int my_measly_int; some_function([=](int i){return my_measly_int + i;});将$ my_huge_vector复制 ..
发布时间:2016-10-13 10:09:40 C/C++开发

Lambda表达式作为类模板参数

可以将lambda表达式用作类模板参数吗? (请注意,这是一个与这一个非常不同的问题,它询问是否lambda表达式本身可以模板化。) 我问你是否可以这样做: template struct Foo {}; // ... Foo void {})> foo; 这在例如类模板有各种参数例如 ..
发布时间:2016-10-13 10:09:26 C/C++开发

这个代码来自“C ++编程语言”第4版第36.3.6节有明确的行为?

在Bjarne Stroustrup的 C ++编程语言 第4版部分 36.3.6 类似STL的操作,以下代码用作链接: void f2() { std :: string s =“但我听说它工作,即使你不相信它”; s.replace(0,4,“”).replace(s.find(“even”),4,“only”) .replace(s.find(“do not”) ,6“,” ..

允许基于范围对于枚举类?

我有一个循环的代码块,其中我循环枚举类的所有成员。 我现在使用的循环与基于范围的新相比看起来很不实用。 有没有办法利用新的C ++ 11功能来减少我当前 for 循环的详细程度? / p> 我想改进的当前代码: 枚举类COLOR { Blue, Red, Green, Purple, First = Blue, Last = Purple } in ..
发布时间:2016-10-13 10:08:46 C/C++开发

Lambda函数作为基类

使用Lambdas进行游戏我发现了一个我不能完全理解的有趣的行为。 假设我有一个 struct Overload 来源于2个模板参数,并且有一个使用F1 :: operator(); 子句。 现在如果我从两个函数派生我只能访问F1的操作符()(如我所料) 如果我从两个Lambda函数派生,这不再。真:我可以从F2访问操作()太 的#include<&iostream的 ..
发布时间:2016-10-13 10:08:17 C/C++开发

自动生成移动操作的规则是什么?

在C ++ 98中,C ++编译器可以通过成员自动拷贝自动生成拷贝构造函数和拷贝赋值运算符,例如 struct X { std :: string s; std :: vector v; int n; }; 编译器自动为 但是,如何在C ++ 11中使用移动语义来改变? 是移动 构造函数和 移动 / strong>自动生成 ..
发布时间:2016-10-13 10:08:08 C/C++开发

实际上有一个原因,为什么重载&&和||不短路?

操作符&& 和 || 的短路行为是程序员的一个惊人的工具。 但是为什么它们在重载时失去这种行为?我理解操作符只是语法糖的函数,但 bool 的操作符有这种行为,为什么应该限制为这种单一类型? 解决方案 所有的设计过程都会导致相互不兼容的目标之间的妥协。不幸的是,C ++中重载的&& 运算符的设计过程产生了一个令人困惑的最终结果:你想从& ; 这个设计过程最终在这个不幸地方的细节 ..

在std :: map和std :: unordered_map之间选择

现在 std 在 unordered_map 中有一个真正的哈希图,为什么在实际存在的系统上使用好的 map over unordered_map 是否有任何明显的情况,我不能立即看到? 解决方案 As 已经提到过, map 允许遍历排序方式,但 unordered_map 不会。这在许多情况下是非常重要的,例如显示集合(例如地址簿)。这也体现在其他间接的方式,如:(1)开始从 find( ..
发布时间:2016-10-13 10:07:02 C/C++开发

为什么volatile限定符通过std :: atomic使用?

根据我从 Herb Sutter 中阅读的内容, 其他认为 volatile 和并发编程是完全正交的概念,至少就C / C ++而言。 但是,在GCC中 c ++ 0x扩展所有 std :: atomic 的成员函数具有 volatile 限定符。在Anthony Williams的实施 std ::原子。 那么什么处理,我的原子 ..
发布时间:2016-10-13 10:05:48 C/C++开发

C ++ 11:用std :: shared_ptr()替换所有非所有的原始指针?

随着 std :: unique_ptr 的到来,瑕疵 std :: auto_ptr 最后可以休息。所以在过去几天,我一直在改变我的代码使用智能指针,并从我的代码中消除所有 delete 。 虽然valgrind说我的代码是内存干净的,智能指针的语义丰富性将使清洁和更容易理解的代码。 在大多数代码,翻译很简单:使用 std :: unique_ptr 代替拥有对象持有的原始指针,抛出 ..
发布时间:2016-10-13 10:05:19 C/C++开发

为什么我会使用push_back而不是emplace_back?

C ++ 11向量具有新功能 emplace_back 。与 push_back (它依赖于编译器优化以避免拷贝)不同, emplace_back 使用完美转发将参数直接发送到构造函数以就地创建对象。在我看来, emplace_back 做一切 push_back 可以做,但有些时候它会做得更好 我必须使用 push_back 吗? 解决方案 在过去四年里我已经考虑了这个问题。我得出 ..
发布时间:2016-10-13 10:04:45 C/C++开发

枚举类是否可以转换为底层类型?

有没有办法将枚举类字段转换为底层类型?我认为这是自动的,但显然不是。 枚举类my_fields:unsigned {field = 1}; unsigned a = my_fields :: field; 该作业被GCC拒绝。 错误:无法在赋值中将'my_fields'转换为'unsigned int'。 解决方案 我认为您可以使用 std :: under ..
发布时间:2016-10-13 10:04:42 C/C++开发