32 moveable元素對於容器速度的影響

2021-08-13 23:52:02 字數 1729 閱讀 4812

本篇主要講述類元素搬移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...