move-semantics

    2熱度

    1回答

    我有複製和移動構造這樣的基類: class Test { public: Test(int i) { iptr = new int(i); } Test(const Test & other) { printf("copy constructor\n"); iptr = new int(*other.iptr); }

    1熱度

    1回答

    示例A中使用的移動語義是必需的,哪個結構優越? 實例A: struct A { std::string a; A(std::string a) : a(std::move(a)){ } }; 例B: struct B { std::string b; B(const std::string& b) : b(b){ } }; 我不相信這是一個重

    1熱度

    1回答

    所以我有影像學資料完成分析我的代碼分析後,將數據移動到一個新的目錄。此代碼工作正常,但數據未輸出到正確的文件夾中。相反,它輸出的文件夾太高。這事我當然希望從長遠看來解決,但因爲我在一定的時間限制,我想輸入代碼到我的腳本,將只需將文件移動到我創建了正確的文件夾/目錄。我已經嘗試了mv和shutil命令,但它們似乎並沒有工作。如果有人提出瞭如何解決/改進將這些文件移動到正確位置的方法,我將不勝感激。如

    21熱度

    2回答

    通過使用Copy & Swap成語,我們可以很容易地實現與強異常安全的拷貝賦值: T& operator = (T other){ using std::swap; swap(*this, other); return *this; } 然而,這需要T是Swappable。如果std::is_move_constructible_v<T> && std::is_

    0熱度

    1回答

    所以我試圖將一些預處理後的數據移動到合適的文件夾中,因爲我的其他代碼沒有在正確的位置輸出它(問另一個問題和我正在處理的內容)以及我一直有麻煩。我的代碼發佈在下面。我不斷收到這個錯誤(下面發佈)。我非常接近,但我需要代碼來搜索一個目錄以查看文件。它似乎是在我的subject_dir而不是我的dti_dir(儘管我在代碼中指定了這個)。我想我可能會錯誤地輸入shutil.move命令的路徑。也許我需要

    6熱度

    2回答

    我有一段代碼 #include <iostream> class A { public: A() { std::cout << "Default constructor" << std::endl; } A(const A & other) { std::cout << "Copy constructor" << std::en

    1熱度

    1回答

    我有一個明確刪除拷貝構造函數的類,比如說,NonCopyable。然後有一個Base1類NonCopyable類型的成員。另一類Base2與Base1作爲父母。最後 - Derivative類,其中父母是Base2。 由於NonCopyable是不可複製的,很明顯,Base1,Base2和Derivative也將是不可複製的。但似乎也有移動構造函數(和賦值運算符)被刪除。 測試在這裏: GCC M

    1熱度

    1回答

    所有這三個容器都通過const引用接受函數對象,而不是值或轉發引用。這導致需要將函數對象複製到容器的內部存儲器中(最多兩次)。 是否有複製函數對象兩次的原因?與賦予用戶傳遞任何類型的函數對象並將其構建到內部函子存儲中的能力相反?這樣,圖書館就更加普遍,對用戶而言意想不到。 相同的理念是在push_back()功能施加 - 它們具有兩個重載,一個具有const引用和一個與一個rvalue參考,因爲這

    1熱度

    2回答

    我有我自己的類載體,它實現了移動的構造,移動賦值操作符和方法的push_back爲右值 template<typename T> class Vector { private: T* buffer; size_t size; size_t capacity; public: Vector(size_t s) { size = 0;

    7熱度

    2回答

    請考慮下面的代碼: struct MyStruct { int iInteger; string strString; }; void MyFunc(vector<MyStruct>& vecStructs) { MyStruct NewStruct = { 8, "Hello" }; vecStructs.push_back(std::move(