问题标签 [stdmove]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 向量和 push_back()
简单的例子,但是我不明白我做错了什么,结果我得到了比我预期的2个额外的析构函数(预期2)。有人可以解释一下吗?
结果:
c++ - 何时复制函数参数?
我很想知道何时复制函数的参数。
该函数是否从一开始就复制其参数?如果不是,我们如何知道参数何时被复制?从上面的代码中,我假设参数没有被复制,因为 std::move 仍然影响变量 x。
c++ - 作为函数参数的正确值,正确用法?
尝试更多地使用 rightvalues 但我很困惑,我应该如何设计我想要使用正确值的函数:
这两个函数调用之间的有效区别是什么?当我用双&符号传递它并使用时会发生什么std::move
?
c++ - 在 C++ 中使用移动语义传递 unique_ptr 的向量
我正在学习 CPP++14 移动语义。在编写小代码时,我观察到一些奇怪的行为。我正在使用 r 值引用将唯一 ptr 的向量移动到函数中。在调试时,我发现更改也应用于移动的对象。为什么即使物体被移动,我也会观察到这种情况?以下代码中的移动有什么作用?
c++ - 传递 unique_ptr 时调试和发布配置的移动不一致?
所以我得到了一些使用 SFML 库处理一些简单 tcp 套接字的代码。因此,在使用 SFML 功能的情况下创建了一个套接字,并从函数作为右值引用返回。然后,一个组织函数传递这个套接字(目前只被存储)并向它的调用者发送一个套接字是否被处理的信号。然而,这并没有按预期工作。
前面使用的类TcpListener
在组合中封装了一个 sf::TcpListener 并简单地转发它的使用。
我有一个简单的测试,尝试连接。
此测试在我正在编译的两种配置中失败的方式不同。在 debug ( g++ -g3
) 中,测试意外失败。
调试和输出显示,第一个返回nonBlockingNext()
,即返回监听器接受的套接字的那个,已经到达,但在随后的外部函数中processNextIncoming
的值new_socket
不是 set/is nullptr
。
在 Release 中,g++ -O3
输出显示有希望,但测试本身因段错误而崩溃,似乎在 test-teardown 中,可能是在释放套接字时,我通过进一步的输出确定了这一点,因为在优化代码中进行调试并不是很有成果。
在 -g3 编译中调试时,我进一步注意到,new_socket
在返回之前似乎再次达到了“nonBlockingNext()”中的构造:
一个步骤,很可能在发布配置中被优化掉,或者可能只是 gdb 很奇怪。
出了什么问题?我该如何继续并让它发挥作用?我在右值和移动方面犯了任何错误吗?
c++ - 完美的转发和移动
我有一个程序,我有一个包含 2 个数据成员的结构
我必须将它们添加到我有许多复制操作的 unordered_map 中。现在我正在寻找完美的转发和移动,我应该学习这些来摆脱int32_t和uint64_t的复制操作吗?这会影响程序的速度吗(我没有任何指针)?这是我添加到进行大量复制操作的无序地图的方法:
我会读取很多数据,所以我需要编写一个高效的(就速度而言)程序。如果您有任何建议,我可以详细搜索以提高速度,我将不胜感激。(我也为无序地图使用储备)
c++ - 如果我传递一个右值,为什么在 std::move 中需要 static_cast 和 std::remove_reference?
我试图了解更多的移动语义。现在这是一个可能的实现std::move
:
但我对其进行了一些编辑以了解其工作原理:
但是为什么我不能直接返回实例化后obj
的哪个呢?rvalue-reference type
c++ - 将具有移动 c-tor 的局部变量移动到具有参数的函数中
试图清除我对何时发生移动的理解,以及何时编写通过值而不是引用传递值的函数以从移动中获益。
在这种情况下 localStr 会被移到 foo1 中吗?
如果要添加更多级别的函数调用:
会不会有两个动作?
c++ - 移动语义及其工作原理?
是否有用于 move 而不是 的语言语法std::move()
?以及如何std::move()
工作?
在五规则中,我必须定义移动构造函数。
代码使用std::move()