stdmove相关内容

什么是 std::move(),什么时候应该使用它?

这是什么? 它有什么作用? 什么时候使用? 好的链接表示赞赏. 解决方案 维基百科页面关于 C++11 R 值引用和移动构造函数 在 C++11 中,除了复制构造函数,对象还可以有移动构造函数. (除了复制赋值运算符之外,它们还有移动赋值运算符.) 如果对象具有“右值引用"类型(Type &&),则使用移动构造函数而不是复制构造函数. std::move() 是一种类 ..
发布时间:2022-01-30 16:33:31 C/C++开发

我应该返回一个右值引用(通过 std::move'ing)吗?

A C++下一篇博文说过 计算(…){一个 v;…返回 v;} 如果 A 具有可访问的副本或移动构造函数,编译器可能会选择省略副本.否则,如果 A 具有移动构造函数,则移动 v.否则,如果 A 具有复制构造函数,则复制 v.否则,会发出编译时错误. 我认为我应该总是返回不带 std::move 的值因为编译器将能够为用户找出最佳选择.但在博客文章的另一个例子中 矩阵运算符+(Matri ..
发布时间:2022-01-19 14:47:49 C/C++开发

什么是 std::move(),什么时候应该使用?

这是什么? 它有什么作用? 应该什么时候使用? 感谢好的链接. 解决方案 维基百科页面关于 C++11 R 值引用和移动构造函数 在 C++11 中,除了复制构造函数之外,对象还可以有移动构造函数. (除了复制赋值运算符,它们还有移动赋值运算符.) 如果对象具有“右值引用"类型(Type &&),则使用移动构造函数而不是复制构造函数. std::move() 是一个强 ..
发布时间:2021-12-01 15:30:47 C/C++开发

分配 std::vector到 std::vector无需复制内存

我有一个返回 std::vector 的函数 我知道 std::byte 既不是字符类型也不是整数类型,并且只能通过类型转换才能将其转换为 char.到目前为止一切顺利. 所以我想(在我知道向量只包含字符数据的情况下)从 std::vector 转移底层缓冲区的所有权. 到 std::vector 使用 std::move,以避免复制整个底层缓冲区. 当我尝试 ..
发布时间:2021-09-17 19:09:08 C/C++开发

在std :: move之后使用对象不会导致编译错误

在对象上调用 std :: move 后,如果此后使用该对象,为什么语言不引起编译错误? 是因为编译器无法检测到这种情况吗? 解决方案 C ++语言设计的一般原则是“信任程序员".在将对象作为 std :: move 的参数之后,拒绝使用该对象时,我会想到一些问题. 通常情况下,确定给定用途是否在调用 std :: move 之后,就等于解决了暂停问题.(换句话说,这不可能完成 ..
发布时间:2021-04-20 18:36:47 C/C++开发

为什么尽管参数是R值引用也要使用std :: move

我对在以下代码中使用 std :: move()感到困惑: 如果我取消注释(2)的行,输出将是: 1 2 3 ,但是如果我取消注释(1)的行,输出将不算什么,这意味着移动 std的构造函数::vector 被调用了! 为什么我们必须在(1)处再次调用 std :: move 才能调用 std :: vector 的move构造函数? 我了解到 std :: move 获得其参数的 ..
发布时间:2021-04-20 18:35:06 C/C++开发

我应该返回一个右值引用(通过std :: move'ing)吗?

A A compute(…) { A v; … return v; } 如果A具有可访问的副本或移动构造函数,则编译器可以选择取消副本.否则,如果A具有移动构造函数,则会移动v.否则,如果A具有复制构造函数,则将复制v. 否则,将发出编译时错误. 我认为我应该始终返回不带std::move的值 因为编译器将能够为用户找出最佳选择.但是在博客文章的另一个示例中 Matrix ope ..
发布时间:2020-07-25 20:28:36 C/C++开发