move-semantics

move-semantics

文章 0 浏览 5

Qsort 在 C++ 中不适用于哪些类型?

std::sort 使用 std::swap 交换元素,而 std::swap 又使用复制构造函数和赋值运算符,保证交换值时获得正确的语义。 qsort 通过简单地交换元素的底层…

零度℉ 2024-11-10 10:49:14 8 0

当最后一次使用可移动对象时,编译器是否会自动使用移动语义?

我最近一直在研究右值引用,并得出结论,在将创建对象的完整副本的任何地方使用按值传递是非常有利的(有关完整的理由,请参见例如 添加右值引用运算…

愛上了 2024-11-09 12:16:56 6 0

按值返回时值参数是否隐式移动?

考虑以下函数: Foo foo(Foo x) { return x; } return x 会调用复制构造函数还是移动构造函数吗? (让我们把 NRVO 放在一边。) 为了进行调查,我编…

小清晰的声音 2024-11-07 12:18:08 7 0

将 unique_ptr 从一个向量移动到另一个向量

我想将存储在未排序向量中的 unique_ptr 移动到另一个向量,该向量将包含已排序的指针向量。 移动 unique_ptr 肯定不会自动删除第一个向量中的元素吗…

梦里的微风 2024-11-03 17:40:21 7 0

是否存在返回 RValue 引用 (&&) 有用的情况?

函数应该返回 RValue 引用是否有原因?一种技巧、技巧、习语或模式? MyClass&& func( ... ); 我知道一般情况下返回参考文献的危险,但有时我们会这样…

梦一生花开无言 2024-11-02 23:30:13 9 0

类中方法的正确使用`=delete`

以下代码片段对于取消定义类的所有其他生成的方法和构造函数是否正确? struct Picture { // 'explicit': no accidental cast from string to Picture…

栖竹 2024-11-01 22:31:28 10 0

移动语义 std::move 如何使用它

#include template typename std::remove_reference::type&& move(T&& v) { return v; } void main() { int a; move(a); } 为什么这段代码不能编译? …

清引 2024-10-30 10:48:45 7 0

为什么 std::move 使用 std::remove_reference 实现?

我不太明白 std::move 函数 template typename remove_reference::type&& move(T&& a) { return a; } 为什么要 remove_reference ? 有人能给我一个简…

难理解 2024-10-29 11:31:40 4 0

C++11 - 区分右值指针

如何将变量区分为编译器构造的字符串? 例如,右值 "Hello, World" 的类型为 const char*。 const char* 本身并不意味着指针不能更改。 char* const …

南汐寒笙箫 2024-10-22 07:37:52 7 0

如何达到“最佳”效果?带有右值的算术表达式中的运算符重载解析?

首先,我为这个过于冗长的问题表示歉意。我想不出任何其他方法来准确总结我的问题...现在讨论实际问题: 我目前正在试验 C++0x 右值引用...以下代码会…

日久见人心 2024-10-19 12:27:06 12 0

为什么 std::forward 放弃 constexpr-ness?

由于未声明 constexpr,std::forward 将放弃将参数转发到的任何函数的 constexpr 性。 为什么 std::forward 没有声明 constexpr 本身,以便它可以保留…

烟织青萝梦 2024-10-18 22:49:10 10 0

如果我们已经有了 RVO,移动语义会提供什么优化?

据我了解,添加移动语义的目的之一是通过调用特殊构造函数来复制“临时”对象来优化代码。例如,在这个答案中我们看到它可以用来优化诸如字符串 a = x…

戈亓 2024-10-18 01:43:12 7 0

C++11 右值和带有 return 语句的移动语义

我试图理解 C++11 的右值引用和移动语义。 这些示例之间有什么区别,哪些示例不进行矢量复制? 第一个例子: std::vector return_vector(void) { std:…

隱形的亼 2024-10-17 08:39:00 12 0

使交换更快、更易于使用且异常安全

我昨晚无法入睡,开始思考 std::swap。这是熟悉的 C++98 版本: template void swap(T& a, T& b) { T c(a); a = b; b = c; } 如果用户定义的类 Foo 使…

爱要勇敢去追 2024-10-15 05:18:23 8 0

实现 fstream 移动的 C++0x 库

找到如何返回 fstream (C++0x) 的答案后,我现在想知道是否有一个当前的 c++0x 库可以实现 fstream 的移动(甚至交换)(如 gcc (27.9) 没有)。我更…

盗梦空间 2024-10-15 03:37:09 11 0
更多

推荐作者

alipaysp_snBf0MSZIv

文章 0 评论 0

梦断已成空

文章 0 评论 0

瞎闹

文章 0 评论 0

寄意

文章 0 评论 0

似梦非梦

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文