c++11相关内容
我正试图加速我的代码(下面是一个最小的、可重现的例子),我被告知,对于我的比较器函数来说,通过引用传递将是一种更有效的方法。这是我第一次听说这个短语,所以我查了一下,找到了一些有例子的网站,但我不知道什么时候和如何使用它。在这种情况下我将如何使用它? #include #include #include #include
..
我正在使用独立的ASIO和C++11创建C++服务器应用程序,但收到错误,这就是我寻求帮助的原因。 错误 在类worker_thread中,在调用shared_from_this()期间引发bad_weak_ptr异常,导致程序崩溃。 布局 类connection_manager在std::vector容器中创建并存储std::shared_ptr
..
是否有什么方法可以告诉std::lock_guard在获取互斥体时调用try_lock而不是lock? 我能想到的唯一方法是使用std::adopt_lock: if (!_mutex.try_lock()) { // Handle failure and return from the function } std::lock_guard lo
..
我在试着理解这句话的意思: (int)(unsigned)-1 == -1; 根据我目前的理解,会发生以下情况: -1是签名int,并强制转换为无签名int。这样做的结果是,由于回绕行为,我们获得了可以由unsigned类型表示的最大值。 接下来,我们在步骤1中获得的unsigned类型的最大值现在强制转换为signed int。但请注意,此最大值是unsigned type
..
我试图用c++创建一个简单的(绝对)函数,我已经创建了两个同名函数,一个接受整数并返回整数,另一个接受浮点数并返回浮点数,但每次尝试运行代码时都收到此错误: “错误:调用重载的‘Absolute(Double)’不明确” 我尝试更改第二个函数的输入参数,以便它接受双精度值并返回浮点型,并且代码运行良好。我想知道当参数和返回类型都设置为浮点型时代码无法运行的原因,谢谢。 #incl
..
在学习C++时,我遇到了转换序列这个复杂的主题,我遇到了一个我自己解决不了的问题。 void g(const double) { std::cout
..
我看到Protobuf有一个名为“bytes”的类型,它可以存储任意数量的字节,相当于“C++字符串”。我不喜欢使用“bytes”的原因是它希望输入为C++字符串,即Boost IP需要转换为字符串。现在我的关注点在于:我想执行序列化,并通过TCP套接字发送编码后的协议缓冲区消息。我希望确保编码邮件大小尽可能小。 我目前使用的是以下.proto文件: syntax = "proto2"
..
如何在不复制和不保留源std::string对象的情况下获得std::string字符数据的所有权?(我希望在不同类型之间使用移动语义。) 我使用C++11Clang编译器和Boost。 基本上我想做一些与此相当的事情: { std::string s(“Possibly very long user string”); const char* mine = s.
..
我正在为游戏Scattegories开发一个程序。在程序中有一个表,玩家可以在定时器线程在后台工作时输入单词。我希望当时间结束时,玩家将不能再输入,轮到他结束。 我如何才能做到这一点? 表和计时器: void timer() { cout
..
我想提交一个句柄,但我只想在共享指针仍然有效的情况下执行它: // elsewhere in the class: std::shared_ptr node; // later on: const std::weak_ptr slave(node); // can I do this in the capture clause somehow? const auto h
..
我已经使用该文档在我的程序中创建了所有单例: http://erdani.com/publications/DDJ_Jul_Aug_2004_revised.pdf (如果有人想知道为什么是单例,它们都是工厂,其中一些存储有关如何创建实例的全局设置)。 每一个看起来都像这样: 声明: class SingletonAndFactory { static Singleton
..
我完全是一个新手,试图从书本上学习C++。下面的代码可以正常工作并产生预期的输出,但是定义engine和randomInt的两行上有警告:“初始化‘Engine’的静电存储时间可能会抛出无法捕获的异常。” 如果我将第7行和第8行放在main()内,警告将完全消失,但是engine和randomInt对getNumber不可用。 我不知道如何修复警告。另外,也许更重要的是,除了main(
..
假设我们有一个名为AAA的类,它同时支持复制/移动: class AAA { public: AAA() = default; ~AAA() = default; AAA(const AAA& rhs) { std::cout
..
blot:C++有隐式转换,我正在寻找阻止它的方法。 让我为下面的代码片段举一个相同的例子: #include int incrementByOne(int i) { return ++i; } int main() { bool b = true; std::cout
..
我有一个包括A.H的main.cpp(它有自己的.cpp) A.h仅包括标题库“stbi_image.h”,如下所示: #ifndef STB_IMAGE_IMPLEMENTATION #define STB_IMAGE_IMPLEMENTATION #include "stb_image.h" #endif (https://github.com/nothings/stb) *.
..
我有一些整数向量,我希望将它们有效地存储在c++11中的unorder_map中。我的问题是: 如何最好地存储这些内容并针对.find查询进行优化? 我想出了以下hasher: class uint32_vector_hasher { public: std::size_t operator()(std::vector const& vec) const
..
基于Boost::ASIO客户端/服务器关系,只有当服务器线程处于“正在等待连接”状态时,我才必须从服务器程序启动客户端程序。 我的问题是如何了解这种状态? 作为示例使用asio example/serialization link,并将server.cpp的main函数替换为该代码: #include #include // wait
..
在下面的代码中,对foo的第一个调用不明确,因此无法编译。 第二个在lambda之前添加了+,解析为函数指针重载。 #include void foo(std::function f) { f(); } void foo(void (*f)()) { f(); } int main () { foo( [](){} ); // a
..
以下代码在 gcc 4.8 和 Clang 3.2 下编译: int main(){整数大小 = 10;int arr[大小];} C++ 标准的 8.3.4/1 规定数组的大小必须是一个整数常量表达式,而 size 似乎不是.这是两个编译器中的错误,还是我遗漏了什么? 最新的 VC++ CTP 拒绝带有这个有趣消息的代码: 错误 C2466: 无法分配常量大小为 0 的数组 有趣
..
已更新,见下文! 我听说并读到 C++0x 允许编译器为以下代码段打印“Hello" #include int main() {而(1);std::cout
..