【发布时间】:2011-08-02 21:57:25
【问题描述】:
int main () {
vector<int> myvector;
vector<int>::iterator it;
// set some values:
for (int i=1; i<=5; i++)
myvector.push_back(i*10); // myvector: 10 20 30 40 50
myvector.resize(myvector.size()+3); // allocate space for 3 more elements
copy_backward ( myvector.begin(), myvector.begin()+5, myvector.end() );
cout << "myvector contains:";
for (it=myvector.begin(); it!=myvector.end(); ++it)
cout << " " << *it;
cout << endl;
return 0;
}
为什么输出是“myvector contains: 10 20 30 10 20 30 40 50”
为什么不“30 40 50 10 20 30 40 50”
copy_backward的实现在这里:
template<class BidirectionalIterator1, class BidirectionalIterator2>
BidirectionalIterator2 copy_backward ( BidirectionalIterator1 first,
BidirectionalIterator1 last,
BidirectionalIterator2 result )
{
while (last!=first) *(--result) = *(--last);
return result;
}
好困惑。 感谢您的所有帮助。
【问题讨论】:
-
为什么要修改前三个元素?