為了建立乙個容器為另乙個容器的拷貝,兩個容器的型別以及元素型別必須匹配。當傳遞引數為兩個迭代引數用來拷貝時,就不需要容器型別是相同的了,而且嚴肅型別也不要求是相同的,只需要將考別的嚴肅轉換為對應的元素型別即可。如圖中例項:
c為一容器,c= 將c種元素替換為初始化列表中的資料,但是對array不適用。
採用swap函式交換兩個容器的元素時,對vector等元素不會移動,故其迭代器仍然有效,且減緩時間非常快,是乙個常熟時間,但是對array的swap函式就會真正交換他們的元素,故交換時間與他們所含元素的數量成正比,交換後迭代器指向的已經是另乙個array中所指向的元素了。即指向的值發生了改變。
swap函式有層原函式版本和非成員函式版本,推薦非成員函式版本,即swap(c1,c2);版本。
當我們用乙個物件來初始化容器時,或者將乙個物件插入到容器中時,司機上放入容器的是物件的拷貝,而不是物件本身,這與我們將物件傳遞給非引用引數一樣,對容器中元素的修改不會影響到原始物件。
解引用c.end()–才能夠得到容器最後乙個元素,c.end()指向的是最後乙個元素的後乙個位置。
at()操作只支援vector、deque、array、string不支援list。可以這樣裡理解,at為隨機訪問,而list為鏈式儲存,故不支援。
當進行大多數操作時,容器的尾後迭代器都會失效,故不要儲存end返回的迭代器,而應該每次處理完相應的模組後均從新定位尾後迭代器。否則會產生災難性後果。如下**:
//不安全,迭代器失效
auto beg = v.begin();
auto end = v.end();
while(beg!= end)
//正確的寫法
while(beg!= v.end())
C 拷貝建構函式的幾個細節
關鍵字 c 拷貝建構函式是c 最基礎的概念之一,大家自認為對拷貝建構函式了解麼?請大家先回答一下三個問題 1.以下函式哪個是拷貝建構函式,為什麼?x x const x x x x x x x int a 1 x x x int a 1,b 2 2.乙個類中可以存在多於乙個的拷貝建構函式嗎?3.寫出...
C 拷貝建構函式的幾個細節
拷貝建構函式是c 最基礎的概念之一,大家自認為對拷貝建構函式了解麼?請大家先回答一下三個問題 1.以下函式哪個是拷貝建構函式,為什麼?x x constx x x x x x x int a 1 x x x int a 1,b 2 2.乙個類中可以存在多於乙個的拷貝建構函式嗎?3.寫出以下程式段的輸...
C 拷貝建構函式的幾個細節
關鍵字 c 拷貝建構函式是c 最基礎的概念之一,大家自認為對拷貝建構函式了解麼?請大家先回答一下三個問題 1.以下函式哪個是拷貝建構函式,為什麼?x x constx x x x x x x int a 1 x x x int a 1,b 2 2.乙個類中可以存在多於乙個的拷貝建構函式嗎?3.寫出以...