move-semantics 相关问题

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

“调用删除的函数的用法” std :: unique_ptr`移动构造函数?

当定义一个函数引用std :: unique_ptr对象的函数时,我面临编译问题。 #include class foo {public:foo(){/ * * /}; };无效函数(...

回答 1 投票 0

vector >不能用MSVC编译

对仅移动类型的映射进行矢量处理似乎在Windows上无法正常工作。在此处查看代码:https://godbolt.org/z/yAHmzh #include #include #include ...

回答 1 投票 2

如何定义一个函数来使用移动语义和复制语义?

假设我正在实现一个集合,并且想向其中添加一个元素,就像这样。模板 class MyCollection {add(const T&element); };现在,由于添加了...

回答 1 投票 0

第4.2.3节中的C ++复制省略之旅

我正在阅读第4.2.3节“初始化容器”,C ++第二版。它说:Vector read(istream&is){向量v; for(double d; is >> d;)v.push_back(d); ...

回答 1 投票 0

即使迭代器为std :: move_iterator,为什么range-v3也不移动元素?

#include #include #include #include 使用命名空间std :: literals; int main(){auto src = std :: vector {“ 123” s,“ 456” s,...

回答 2 投票 -1

移动转换运算符的语义

可移动转换运算符的语法是什么?我有一个包装obj的包装器,它有一个obj转换运算符:class wrap {public:operator obj(){...} private:obj ...

回答 1 投票 8

r值引用和指针之间的确切对应关系?

这是有关C ++语言中的指针和引用类型之间的对称性的一般问题。该对应关系表在C ++(C ++ 11及更高版本)中有意义吗? |参考|指针| ----...

回答 2 投票 1

复制vs in std :: pair支持初始化

我有以下代码,其输出显示在下面。我似乎无法理解为什么一组支撑式初始化会导致调用move构造函数,而另一组会导致...

回答 1 投票 1

为什么拷贝分配会导致GCC发出-Wvirtual-move-assign警告?

以下类层次结构将在BCC实例中调用移动分配时在GCC中引起[-Wvirtual-move-assign]警告。struct A {std :: vector v; };结构B:public ...

回答 1 投票 0

从同一个类的另一个成员中引用类成员对象是不正确的做法吗?

我是C ++(具有Java背景)的新手,我试图了解类设计的原理和实践。从我已经阅读的内容看来,我似乎应该更喜欢...

回答 1 投票 0

在指定的返回值上使用std :: move以确保不进行复制吗?

考虑A类; //具有堆分配内存和“正常”移动构造函数/移动分配的类。 a_factory(/ *一些用于构造A对象的args * /){//处理args的代码,以便能够...

回答 1 投票 0

将语义从一个矢量移动到另一个矢量

如果我有一个向量std :: vector oldData,我可以使用移动语义将数据移动到另一个向量std :: vector newData中。而不是这样做:std :: vector ... ...>

回答 1 投票 0

移动语义机制

我已经开始学习C ++,但对移动语义有些疑问。当这本书说A的move构造函数“窃取”右值B的属性时,是否意味着指向a ...

回答 1 投票 0

为什么行为随emplace_back / push_back的顺序变化而变化?为什么构造函数的数量增加?

class Buffer {unsigned char * ptr {nullptr}; size_t长度{0}; public:Buffer():ptr(nullptr),length(0){std :: cout <

回答 1 投票 0

为什么在 和

版本。 中的std :: move实际上执行其名称所暗示的动作,而<< [std :: move in [ 所以将这两个名称都命名为move有点困惑吗? 这可能会造成混淆,尤其是那些不习惯于支持重载的语言的人。 但是,虽然这是主观的,但了解两个具有相同名称的功能也并不难。 为什么在和同时都有std :: move 因为该语言的设计者选择对两个函数使用相同的名称。

回答 1 投票 5

在参数中移出的智能指针上调用方法是否安全?

此代码安全吗?如果方法接受值或右值引用,答案是否会改变?它会更改为unique_ptr吗? struct foo {void bar(std :: shared_ptr p)//或std :: ......> ] >>

回答 1 投票 1

使用std :: move()与在构造函数成员初始化器列表中分配

在参数化的构造函数(带有初始值设定项列表)中使用std :: move()而不是常规成员初始化(即分配)的好处是什么?例如,#include #include ] >>

回答 1 投票 0

是否允许从std :: map的键中窃取资源?

在C ++中,可以从以后不再需要的地图中窃取资源了吗?更准确地说,假设我有一个带有std :: string键的std :: map,并且我想通过...

回答 4 投票 9

我应该实现右值推送功能,应该使用std :: move吗?

作为练习,我正在C ++ 11中实现一个堆栈类。这是相关的代码:template class stack {private:T * elements; std :: size_t容量; std :: size_t计数; ...

回答 1 投票 0

为什么要复制而不是移动我的数据元素?

我正在执行一些有关移动语义的测试,我的类行为对我来说很奇怪。给定模拟类VecOfInt:类VecOfInt {public:VecOfInt(size_t num):m_size(num),m_data(new ...

回答 5 投票 1

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