两种方法。
方法一:
使用list::splice。splice的意思就是将当前的元素从源list中去除,然后放到目标list的指定位置。
下面的代码将把list最后一个元素提至最前面,其他元素就会相应后移一位。
#pragma warning(disable : 4786)
#include <iterator>
#include <list>
#include <string>
#include <iostream>
#include <fstream>
using namespace std;
void main()
{
list<string> _StringList;
_StringList.push_back(string("Begin! "));
_StringList.push_back(string("AfterBegin "));
_StringList.push_back(string("Body "));
_StringList.push_back(string("BeforeEnd "));
_StringList.push_back(string("End! "));
list<string>::iterator itPoint = _StringList.begin();
for(;itPoint!=_StringList.end();itPoint++)
cout << (*itPoint).c_str() << " ";
list<string>::iterator itSwapIndex = _StringList.begin();
list<string>::iterator itelementBelow = _StringList.end();
itelementBelow--;
_StringList.splice(itSwapIndex, _StringList, itelementBelow);
itPoint = _StringList.begin();
for(;itPoint!=_StringList.end();itPoint++)
cout << (*itPoint).c_str() << " ";
}
方法二:
使用iter_swap function。它将交换iterator所指向的元素。很简单,而且可能更通用一点。
list<string>::iterator itSwapIndex = _StringList.begin();
list<string>::iterator itelementBelow = _StringList.end();
itelementBelow--;
iter_swap(itelementBelow, itSwapIndex);
|