本篇主要講述類元素搬移move的用法,如再我們設計類string時,會有big three的設計:拷貝構造、拷貝賦值和析構函式。本篇是再此基礎上,再增加搬移move賦值等操作。
#include #include //snprintf()
#include //rand_max
#include //strlen(), memcpy()
#include using std::cin;
using std::cout;
using std::string;
//以下 mystring 是為了測試 containers with moveable elements 效果.
class mystring
public:
//default ctor
mystring() : _data(null), _len(0)
//ctor
mystring(const char* p) : _len(strlen(p))
// copy ctor
mystring(const mystring& str) : _len(str._len)
//move ctor, with "noexcept" #01
mystring(mystring&& str) noexcept : _data(str._data), _len(str._len)
//copy assignment
mystring& operator=(const mystring& str)
else
return *this;
} //move assignment
mystring& operator=(mystring&& str) noexcept
return *this;
} //dtor
virtual ~mystring()
}
bool
operator
bool
operator==(const mystring& rhs) const
char* get() const
}; size_t mystring::dctor=0;
size_t mystring::ctor=0;
size_t mystring::cctor=0;
size_t mystring::casgn=0;
size_t mystring::mctor=0;
size_t mystring::masgn=0;
size_t mystring::dtor=0;
解析:
a、這是個較完整的類似於string類的設計示例;
b、#01,通過move構造,將原理元素的_data指標給新的元素,然後將原來元素指標delete,原理如下:
c、通過指標的搬移,但具體的資料沒有變動,所以使用搬移類執行速度快很多。
d、搬移move類的符號是&&;
e、注意類被搬移後,原來的物件就不能被使用了。
3 2查詢元素
題目描述 輸入乙個數n,然後輸入n個數值各不相同,再輸入乙個值x,輸出這個值在這個陣列中的下標 從0開始,若不在陣列中則輸出 1 輸入測試資料有多組,輸入n 1 n 200 接著輸入n個數,然後輸入x。輸出對於每組輸入,請輸出結果。樣例輸入 copy 1 2 3 4 樣例輸出 copy includ...
margin top對於父元素的影響
案例問題 子元素設定的margin top沒有起作用,還是定在頂到了父元素的邊緣!並且影響父元素移動 案例 body father son style father son div div 效果如下 分析 垂直外邊距合併問題常見於第乙個子元素的margin top會頂開父元素與父元素相鄰元素的間距,...
css中子元素相對于父元素定位
1 參照定位的元素必須是相對定位元素的前輩元素 相對參照元素進行定位 從上面 可以看出box1是box2的父元素 父元素當然也是前輩元素了 2 參照定位的元素必須加入position relative box13 定位元素加入position absolute,便可以使用top bottom lef...