//容器 myvector 中的元素為10,20,30,40,50
//將容器元素40、50覆寫10、20, 即:40 50 30 40 50:
copy_backward( myvector.end()-2, myvector.end(), myvector.end()-3 );
//為什么myvector.end()-2是40 myvector.end()-3 是20呢。。。
函式原型如下,
template<class BidirectionalIterator1, class BidirectionalIterator2>
BidirectionalIterator2 copy_backward ( BidirectionalIterator1 first,
BidirectionalIterator1 last,
BidirectionalIterator2 result);
想知道是不是[ first,last )區間的原因。
還有一個問題是關于begin()和end()的。
begin() 指向元素, end() 是尾 后 比如:有10 20 30 40 50
vector<int> mac;
mac.begin()+4等不等于mac.end()-1?也就是50.?
或者是像我寫的這個
copy_backward( myvector.end()-2, myvector.end(), myvector.end()-3 );
如果把三個引數都換位end(),
copy_backward( myvector.end(), myvector.end(), myvector.end() );
那么第一個引數是[first, ,第二個引數是last),這兩個myvector.end()是否相等呢?
uj5u.com熱心網友回復:
求解!求解!求解!uj5u.com熱心網友回復:
看檔案(也可以看原始碼)http://www.cplusplus.com/reference/algorithm/copy_backward/?kw=copy_backwardThe function begins by copying *(last-1) into *(result-1), and then follows backward by the elements preceding these, until first is reached (and including it).
begin()和end()的問題是這樣,為了保證經典的迭代寫法
while (it != container.end()) ++it;能夠通用,最后一個可用元素的迭代器自加后會到達end()位置。
vector迭代器就是指標,所以v.begin() + (v.size() - 1)和v.end() - 1是相等的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/66030.html
標籤:基礎類
