move-semantics

    3热度

    2回答

    期间避免拷贝构造函数我有一个类A: class A { int value1; int value2; std::string text; public: A(int value1, int value2, std::string text) : value1(value1), value2(value2), text(text) { } }

    2热度

    1回答

    目前,我正在学习C++,并琢磨一下其中之一就是使用std ::移动 //Code might be incorrect since I havent tested it out Xyt::ByteArray* Xyt::ResourceManager::LoadFileToByteArray(std::string Path) { try { std::ifstream FileS

    1热度

    1回答

    我想我理解堆栈是如何工作的,当变量被移动时会发生什么,但是我找不到这个问题的答案。让我解释一下: 当一个新的作用域被输入/创建时,会在堆栈顶部获取一定量的内存。堆栈指针指向这个内存。它表示堆栈的当前大小。当范围被留下时,通过使堆栈指针返回到前一个位置来释放内存。 在C++ 11中移动语义或更高版本将一些数据的所有权从一个变量移动到另一个变量。这避免了复制数据,因为保存数据的内存保持不变。移动之后,

    4热度

    2回答

    我要的是这样的方法: fn take<T>(vec: Vec<T>, index: usize) -> Option<T> 但是,我无法找到这样的方法。我错过了什么吗?或者是否有一个原因实际上是不安全/不能正确完成的。 编辑:这是从​​3210 有不同的问题的目标是一个remove方法并没有慌乱的越界进入这里,我找的是消耗的方法(即,而不是返回的结果。) Vec,并返回其中一个元素。上述问题的

    0热度

    1回答

    我一直在密切关注的建议从来没有写return语句中std::move,for example。除了一些边缘情况,for example。 我相信,以下是其中std::move可能是值得其他简单的例子 - 我错过了什么?但是我不确定为什么,并且在未来的C++中会发生什么变化? #include <iostream> struct A { }; struct C { }; stru

    21热度

    2回答

    考虑下面的代码: #include <iostream> #include <vector> using namespace std; class A { public: A(int) { cout << "int" << endl; } A(A&&) { cout << "move" << endl; } A(const A&) { cout << "c

    0热度

    1回答

    我想学习移动语义和我读了一招可能比一个副本更快。不过,我看恰恰相反以下琐碎代码: for (int i = 0; i < 100000000; ++i) { std::string a("Copy"); std::string b = a; } for (int i = 0; i < 100000000; ++i) { std::string a("Move")

    7热度

    1回答

    我有以下的C++(11)代码: #include <mutex> void unlock(std::unique_lock<std::mutex> && ulock) { } int main(void) { std::mutex m; std::unique_lock<std::mutex> ulock(m); unlock(std::move(ul

    1热度

    2回答

    可以说我有下面的类: #include <vector> class Foo { public: Foo(const std::vector<int> & a, const std::vector<int> & b) : a{ a }, b{ b } {} private: std::vector<int> a, b; }; 但现在我要考虑到在构造函数

    1热度

    2回答

    在一个Qt相关的代码我试图通过以下的方法,以减少一些重复的线: QPainter createPainter(const QColor& color) { QPainter painter(&m_image); painter.setBrush(color); painter.setPen(color); return painter; } 但是QP