move-semantics 相关问题

移动语义是一种编程语言功能,当源对象是临时对象或其他过期对象时,允许复制操作被更有效的“移动”替换。

当const引用参数绑定到它时,右值是否保持其“状态”?

设T是任意类型。考虑一个带有const [lvalue]引用的函数:void f(const T&obj);假设这个函数在内部调用另一个函数,它有...

回答 2 投票 2

C ++ 11将一个向量移动到另一个向量 - 将rvalue引用传递给构造函数

我试图理解C ++移动语义,std :: move()和rvalue引用。我已经实现了这个例子。 #包括 #包括 int main(){int totalSize = 6; ...

回答 1 投票 0

在没有成员变量的类上移动构造函数与复制构造函数行为

class NullTimer {public:inline static bool changePeriod(const size_t){return false; } inline static void dispose(void){} inline static bool isActive(void){return false; } 排队 ...

回答 1 投票 2

最简洁的方法来禁用复制和移动语义

以下肯定有效,但非常繁琐:T(const T&)=删除; T(T &&)=删除; T&operator =(const T&)=删除; T&operator =(T &&)=删除;我试着 ...

回答 5 投票 15

移动语义:为什么在移动的实例上调用析构函数并且这是一个问题?

我正在赶上现代C ++,练习移动语义。我做了一个非常简单的测试用例:创建一个实例移动 - 构造一个新实例我注意到当我的实例被销毁时,两者都...

回答 1 投票 2

我应该删除移动构造函数和智能指针的移动分配吗?

我正在实现一个简单的智能指针,它基本上跟踪它处理的指针的引用数量。我知道我可以实现移动语义,但我不认为它会...

回答 1 投票 18

在单个向量元素上移动语义

std :: move在单个向量元素上的行为是什么?例如(接下来大致简化的代码)这会做正确的移动吗?我需要擦除()移动的元素吗?我通常用...

回答 1 投票 -1

传递右值和左值向量

我有一个方法my func从get_vec获取一个向量并将其传递给类A的一些构造函数.class A {public:A(std :: vector) && vec):m_vec(std :: move(vec)){} std :: ...

回答 3 投票 2

要插入的值的状态

如果insert返回false,传递给insert的值是否可能在移动插入后保留在移动状态? #包括 #include #include 结构...

回答 1 投票 3

为什么成员初始值设定项在移动时会调用额外的构造函数调用?

当在具有移动构造函数的类中使用成员初始值设定项时,在移动封闭类时将调用已启用成员的构造函数。为什么会这样?请提供 ...

回答 1 投票 0

使用rvalue引用索引,有什么好处?

我想知道使用rvalue引用参数索引到容器对象而不是const引用是否有任何可能的好处:Foo :: bar(T1 && i,T2 && x)...

回答 1 投票 1

std :: string的对象真的可以移动吗?

正如我们所知,当一个可移动的物体被分配给另一个相同类型的物体时,它将不会被深深地复制。通过这种方式,我们可以节省大量时间。但是今天,我发现了一种现象。 ...

回答 1 投票 3

重用移动的容器?

重用移动容器的正确方法是什么?的std ::矢量 容器; container.push_back(1); auto container2 = std :: move(container); // ver1:什么都不做//container2.clear(); // ...

回答 3 投票 72

关于向量中重复的unique_ptr项的所有权错误

考虑以下代码,我该如何解决我所面临的所有权问题?我需要处理这种情况而不需要复制Item,因为我不能。 Item和ItemContainer是部分......

回答 2 投票 0

交换并移动无限递归

我有一个非常简单的示例类,用C ++ 17编译。 #包括 #包括 struct name {std :: string first,middle,last; name()= default;名字(姓名......

回答 2 投票 1

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

它是什么?它有什么作用?什么时候应该使用?赞赏良好的链接。

回答 6 投票 526

std :: function的仅移动版本

因为std :: function是可复制的,所以标准要求用于构造它的callables也是可复制的:n337(20.8.11.2.1)模板 功能(F f);要求:F应为......

回答 2 投票 49

快速移动任务与Howard Hinnant的short_alloc

我正在使用Howard Hinnant很好的基于竞技场的小分配器,short_alloc。让我感到震惊的是,从一个已超出其竞技场并因此在堆上分配的向量进行移动分配可以完成......

回答 1 投票 11

在C ++中使用移动语义的正确方法是什么?

考虑以下代码:class A {private:std :: string data; public:void set_data(std :: string && data){this-> data = std :: move(data); //第6行}}; int main(){std :: ...

回答 3 投票 1

为什么使用单个赋值运算符处理复制和移动赋值效率不高?

以下是C ++ Primer第5版的练习:练习13.53:作为低效率的问题,HasPtr赋值运算符并不理想。解释为什么。实施副本分配......

回答 2 投票 6

© www.soinside.com 2019 - 2024. All rights reserved.