#include <list>
#include <string>
#include <time.h>
#include <sys/timeb.h>
using namespace std;
char * log_Time(void)
{
struct tm *ptm;
struct timeb stTimeb;
static char szTime[19];
ftime(&stTimeb);
ptm = localtime(&stTimeb.time);
sprintf(szTime, "%02d-%02d %02d:%02d:%02d.%03d",
ptm->tm_mon + 1, ptm->tm_mday, ptm->tm_hour, ptm->tm_min, ptm->tm_sec, stTimeb.millitm);
szTime[18] = 0;
return szTime;
}
template<typename Container>
void removeEveryOtherItem(Container & lst)
{
typename Container::iterator itr = lst.begin();
while (itr != lst.end())
{
itr = lst.erase(itr);
if (itr != lst.end())
++itr;
}
}
int main()
{
int vecSize = 800000;
vector<int> data_vector;
list<int> data_list;
cout << log_Time() << endl;
cout << "插入Vector: " <<log_Time() << endl;
for (int i = 0; i < vecSize; i++)
{
data_vector.push_back(i);
}
cout << "插入到List: " <<log_Time() << endl;
for (int i = 0; i < vecSize; i++)
{
data_list.push_back(i);
}
cout <<"开始删除vector:" <<log_Time() << endl;
removeEveryOtherItem<vector<int>>(data_vector);
cout << "开始删除list:" << log_Time() << endl;
removeEveryOtherItem<list<int>>(data_list);
cout << "删除结束" << log_Time() << endl;
return 0;
}
本代码示例对表(vector和list)进行erase操作,分别是通过操作Vector和List来显示其操作性能。例如表中有1,2,3,4,5,间隔操作删除后,剩下的表是2,4。对于list操作的时间消耗是O(n),对于Vector消耗的时间为平方级别。