copy------強化效率無所不用其極算法
copy(first,last,result)算法可將輸入區間[first,last)內的元素拷貝到輸出區間[result,result+(last-first))內。也就是說,它會運行賦值操做*result =*first,*(result+1) =*(first+1),字體
…一次類推。spa
返回一個迭代器:result+(last-first)。對象
注意:當result位於[first,last)以內時,也就是說,假設輸出區間的起頭與輸入區間重疊,咱們便不能使用copy。但假設輸出區間的尾端與輸入區間重疊。就可以使用copy。copy_backward的限制偏偏相反。假設兩個區間全然不重疊,固然毫無疑問兩個算法都可以用。博客
copy更改的是[result,result+(last-first))中的迭代器所指對象。而非更改迭代器自己。它會爲輸出區間內的元素賦予新值,而不是產生新元素。it
它不能改變輸出區間的迭代器個數。換句話說。copy不能直接用來將元素插入空容器中。io
Template <classBidirectionalIterator1,class BidirectionalIterator2>ast
BidirectionalIterator2copy_backward(BidirectionalIterator1 first,BidirectionalIterator1 last,class
BidirectionalIterator2 result)效率
這個算法的考慮以及實現上的技巧與copy()十分相似,將[first,last)區間內每一個元素,以逆行的方向拷貝到以result-1爲起點,方向亦爲逆行的區間上。
換句話說,copy_backward算法會運行賦值操做*(result-1) = *(last-1),*(result-2)=*(last-2),…依次類推。
返回一個迭代器:
result-(last-first)。Copy_backward所接受的迭代器必須是BidirectionalIterators,才能夠「倒行逆施」。