比如:
不考虑索引,插入,删除。 只需要一个动态内存,vector list谁的效率高尼
#include <iostream>
#include <string>
#include <vector>
#include <list>
#include <wtypes.h>
typedef struct _PERFORTEST
{
std::wstring wstrUserName;
std::wstring wstrUserAge;
std::wstring wstrUserSex;
std::wstring wstrUserInfo;
}PERFORTEST,*PPERFORTEST;
void main()
{
std::vector<PERFORTEST> vec;
std::list<PERFORTEST> lt;
vec.clear();
lt.clear();
PERFORTEST pt;
pt.wstrUserName = L"zyb666666666666666666666666666666666666666666666"
L"666666666666666666666666666666666666666666666666666666666666666";
pt.wstrUserAge = L"6666666666666666666666666666666666666666666666666"
L"666666666666666666666666666666666666666666666666666666666666666";
pt.wstrUserSex = L"6666666666666666666666666666666666666666666666666"
L"666666666666666666666666666666666666666666666666666666666666666";
pt.wstrUserInfo = pt.wstrUserName + pt.wstrUserAge + pt.wstrUserSex;
LARGE_INTEGER freq, start, end;
QueryPerformanceFrequency(&freq);
QueryPerformanceCounter(&start);
for (int i = 0; i < 1; i++)
{
for (int j = 0; j < 10000; j++)
{
lt.push_back(pt);
}
lt.clear();
}
QueryPerformanceCounter(&end);
double dInterval = (end.QuadPart - start.QuadPart)*1.0 / freq.QuadPart;
std::cout << "list spend time " << dInterval << std::endl;
QueryPerformanceCounter(&start);
for (int i = 0; i < 1; i++)
{
for (int j = 0; j < 10000; j++)
{
vec.push_back(pt);
}
vec.clear();
}
QueryPerformanceCounter(&end);
dInterval = (end.QuadPart - start.QuadPart)*1.0 / freq.QuadPart;
std::cout << "vector spend time " << dInterval << std::endl;
while (true);
}
经过测试 不管j的循环是 1还是100000,list花费的时间都比vector少