C++四种数据结构(vector,list,set,map)的增删查该demo

// DataStructureDemo.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <assert.h>
#include <time.h>
#include <vector>
#include <iostream>
#include <stdio.h>
#include <list>
#include <set>
#include <map>
#include <utility>
#include <windows.h>
#include "pthread.h"

using namespace std;

#define DATASIZE 100000
#define EDITVALUE -1
#define SELECTNUMBER 1000
vector<int> rand_vector;

class vecEntity
{
public:
static vecEntity * getInstance();
static void releaseInstance();
void vec_init();
void vec_del();
void vec_sel();
void vec_edit();
void print_result();
private:
vector<int> _v;
static vecEntity * _ve;
DWORD _init_times;
DWORD _del_times;
DWORD _sel_times;
DWORD _edit_times;
};
vecEntity * vecEntity::_ve = nullptr;
vecEntity * vecEntity::getInstance()
{
if (_ve == nullptr)
{
_ve = new vecEntity;
_ve->_init_times = 0;
_ve->_del_times = 0;
_ve->_sel_times = 0;
_ve->_edit_times = 0;
}
return _ve;
}
void vecEntity::releaseInstance()
{
if (_ve == nullptr)
return;
delete _ve;
}
void vecEntity::vec_init()
{
int index = 0;
DWORD start = 0;
DWORD end = 0;
start = GetTickCount();
for (size_t i = 0; i < DATASIZE; i++)
_v.push_back(i);
end = GetTickCount();
_init_times = end - start;
}
void vecEntity::vec_del()
{
DWORD start = 0;
DWORD end = 0;
start = GetTickCount();
std::vector<int>::iterator iter;
for (size_t i = 0; i < rand_vector.size(); i++)
{
iter = find(_v.begin(), _v.end(), rand_vector.at(i));
_v.erase(iter);
}
end = GetTickCount();
_del_times = end - start;
}
void vecEntity::vec_sel()
{
DWORD start = 0;
DWORD end = 0;
start = GetTickCount();
std::vector<int>::iterator iter;
for (size_t i = 0; i < rand_vector.size(); i++)
{
iter = find(_v.begin(), _v.end(), rand_vector.at(i));
}
end = GetTickCount();
_sel_times = end - start;
}
void vecEntity::vec_edit()
{
std::vector<int> t(_v);
DWORD start = 0;
DWORD end = 0;
start = GetTickCount();
std::vector<int>::iterator iter;
for (size_t i = 0; i < rand_vector.size(); i++)
{
iter = find(_v.begin(), _v.end(), rand_vector.at(i));
(*iter) = EDITVALUE;
}

end = GetTickCount();
_edit_times = end - start;
_v.clear();
_v = t;
}
void vecEntity::print_result()
{
printf("%s:初始化:%lu(ms);删除:%lu(ms);查询:%lu(ms);修改:%lu(ms);\n", __FUNCTION__, _init_times, _del_times, _sel_times, _edit_times);
}

class listEntity
{
public:
static listEntity * getInstance();
static void releaseInstance();
void list_init();
void list_del();
void list_sel();
void list_edit();
void print_result();
private:
list<int> _v;
static listEntity * _ve;
DWORD _init_times;
DWORD _del_times;
DWORD _sel_times;
DWORD _edit_times;
};
listEntity * listEntity::_ve = nullptr;
listEntity * listEntity::getInstance()
{
if (_ve == nullptr)
{
_ve = new listEntity;
_ve->_init_times = 0;
_ve->_del_times = 0;
_ve->_sel_times = 0;
_ve->_edit_times = 0;
}
return _ve;
}
void listEntity::releaseInstance()
{
if (_ve == nullptr)
return;
delete _ve;
}
void listEntity::list_init()
{
DWORD start = 0;
DWORD end = 0;
start = GetTickCount();
int index = 0;
for (size_t i = 0; i < DATASIZE; i++)
_v.push_back(i);
end = GetTickCount();
_init_times = end - start;
}
void listEntity::list_del()
{
DWORD start = 0;
DWORD end = 0;
start = GetTickCount();
std::list<int>::iterator iter;
for(size_t i = 0; i < rand_vector.size(); i++)
{
iter = find(_v.begin(), _v.end(), rand_vector.at(i));
_v.erase(iter);
}
end = GetTickCount();
_del_times = end - start;
}
void listEntity::list_sel()
{
DWORD start = 0;
DWORD end = 0;
start = GetTickCount();
std::list<int>::iterator iter;
for (size_t i = 0; i < rand_vector.size(); i++)
{
iter = find(_v.begin(), _v.end(), rand_vector.at(i));
/*for (iter = _v.begin(); iter != _v.end(); iter++)
{
if (*iter != rand_vector.at(i))
continue;
break;
}*/
}
end = GetTickCount();
_sel_times = end - start;
}
void listEntity::list_edit()
{
std::list<int> t(_v);
DWORD start = 0;
DWORD end = 0;
start = GetTickCount();
std::list<int>::iterator iter;
for (size_t i = 0; i < rand_vector.size(); i++)
{
iter = find(_v.begin(), _v.end(), rand_vector.at(i));
(*iter) = EDITVALUE;
}
end = GetTickCount();
_edit_times = end - start;
_v.clear();
_v = t;
}
void listEntity::print_result()
{
printf("%s:初始化:%lu(ms);删除:%lu(ms);查询:%lu(ms);修改:%lu(ms);\n", __FUNCTION__, _init_times, _del_times, _sel_times, _edit_times);
}

class setEntity
{
public:
static setEntity * getInstance();
static void releaseInstance();
void set_init();
void set_del();
void set_sel();
void set_edit();
void print_result();
private:
set<int> _v;
static setEntity * _ve;
DWORD _init_times;
DWORD _del_times;
DWORD _sel_times;
DWORD _edit_times;
};
setEntity * setEntity::_ve = nullptr;
setEntity * setEntity::getInstance()
{
if (_ve == nullptr)
{
_ve = new setEntity;
_ve->_init_times = 0;
_ve->_del_times = 0;
_ve->_sel_times = 0;
_ve->_edit_times = 0;
}
return _ve;
}
void setEntity::releaseInstance()
{
if (_ve == nullptr)
return;
delete _ve;
}
void setEntity::set_init()
{
DWORD start = 0;
DWORD end = 0;
start = GetTickCount();
int index = 0;
for (size_t i = 0; i < DATASIZE; i++)
{
_v.insert(i);
//printf("===function:%s;===value:%d;===index:%d===\n", __FUNCTION__, i, index++);
}
end = GetTickCount();
_init_times = end - start;
}
void setEntity::set_del()
{
DWORD start = 0;
DWORD end = 0; start = GetTickCount();
std::set<int>::iterator iter;
for (size_t i = 0; i < rand_vector.size(); i++)
{
iter = _v.find(rand_vector.at(i));
_v.erase(iter);
}
end = GetTickCount();
_del_times = end - start;
}
void setEntity::set_sel()
{
DWORD start = 0;
DWORD end = 0;
start = GetTickCount();
std::set<int>::iterator iter;
for (size_t i = 0; i < rand_vector.size(); i++)
{
iter = _v.find(rand_vector.at(i));
}
end = GetTickCount();
}
void setEntity::set_edit()
{
std::set<int> t(_v);
DWORD start = 0;
DWORD end = 0;
start = GetTickCount();
std::set<int>::iterator iter;
for (size_t i = 0; i < rand_vector.size(); i++)
{
iter = find(_v.begin(), _v.end(), rand_vector.at(i));
iter = _v.erase(iter);
_v.insert(EDITVALUE);
}

end = GetTickCount();
_edit_times = end - start;
_v = t;
}
void setEntity::print_result()
{
printf("%s:初始化:%lu(ms);删除:%lu(ms);查询:%lu(ms);修改:%lu(ms);\n", __FUNCTION__, _init_times, _del_times, _sel_times, _edit_times);
}

class mapEntity
{
public:
static mapEntity * getInstance();
static void releaseInstance();
void map_init();
void map_del();
void map_sel();
void map_edit();
void print_result();
private:
map<int,int> _v;
static mapEntity * _ve;
DWORD _init_times;
DWORD _del_times;
DWORD _sel_times;
DWORD _edit_times;
};
mapEntity * mapEntity::_ve = nullptr;
mapEntity * mapEntity::getInstance()
{
if (_ve == nullptr)
{
_ve = new mapEntity;
_ve->_init_times = 0;
_ve->_del_times = 0;
_ve->_sel_times = 0;
_ve->_edit_times = 0;
}
return _ve;
}
void mapEntity::releaseInstance()
{
if (_ve == nullptr)
return;
delete _ve;
}
void mapEntity::map_init()
{
DWORD start = 0;
DWORD end = 0;
start = GetTickCount();
int index = 0;
for (size_t i = 0; i < DATASIZE; i++)
{
_v.insert(pair<int,int>(i,i));
//printf("===function:%s;===value:%d;===index:%d===\n", __FUNCTION__, i, index++);
}
end = GetTickCount();
_init_times = end - start;
}
void mapEntity::map_del()
{
DWORD start = 0;
DWORD end = 0;
start = GetTickCount();
std::map<int, int>::iterator iter;
for (size_t i = 0; i < rand_vector.size(); i++)
{
iter = _v.find(rand_vector.at(i));
_v.erase(iter);
}

end = GetTickCount();
_del_times = end - start;
}
void mapEntity::map_sel()
{
DWORD start = 0;
DWORD end = 0;
start = GetTickCount();
std::map<int, int>::iterator iter;
for (size_t i = 0; i < rand_vector.size(); i++)
{
iter = _v.find(rand_vector.at(i));
}
end = GetTickCount();
}
void mapEntity::map_edit()
{
std::map<int, int> t(_v);
DWORD start = 0;
DWORD end = 0;
start = GetTickCount();
std::map<int, int>::iterator iter;
for (size_t i = 0; i < rand_vector.size(); i++)
{
iter =_v.find(rand_vector.at(i));
(*iter).second = EDITVALUE;
}
end = GetTickCount();
_edit_times = end - start;
_v = t;
}
void mapEntity::print_result()
{
printf("%s:初始化:%lu(ms);删除:%lu(ms);查询:%lu(ms);修改:%lu(ms);\n", __FUNCTION__, _init_times, _del_times, _sel_times, _edit_times);
}

void * pv_func(void *para);
void * pl_func(void *para);
void * ps_func(void *para);
void * pm_func(void *para);
void init_rand_number();
int _tmain(int argc, _TCHAR* argv[])
{
init_rand_number();
pl_func(NULL);
pv_func(NULL);
ps_func(NULL);
pm_func(NULL);
getchar();
return 0;
}

void * pv_func(void *para)
{
vecEntity::getInstance()->vec_init();
vecEntity::getInstance()->vec_sel();
vecEntity::getInstance()->vec_edit();
vecEntity::getInstance()->vec_del();
vecEntity::getInstance()->print_result();
vecEntity::releaseInstance();
return NULL;
}
void * pl_func(void *para)
{
listEntity::getInstance()->list_init();
listEntity::getInstance()->list_sel();
listEntity::getInstance()->list_edit();
listEntity::getInstance()->list_del();
listEntity::getInstance()->print_result();
listEntity::releaseInstance();
return NULL;
}
void * ps_func(void *para)
{
setEntity::getInstance()->set_init();
setEntity::getInstance()->set_sel();
setEntity::getInstance()->set_edit();
setEntity::getInstance()->set_del();
setEntity::getInstance()->print_result();
setEntity::releaseInstance();
return NULL;
}
void * pm_func(void *para)
{
mapEntity::getInstance()->map_init();
mapEntity::getInstance()->map_sel();
mapEntity::getInstance()->map_edit();
mapEntity::getInstance()->map_del();
mapEntity::getInstance()->print_result();
mapEntity::releaseInstance();
return NULL;
}
void init_rand_number()
{
srand(time(NULL));
int index = 1;
std::vector<int>::iterator iter;
while (index <= SELECTNUMBER)
{
int rand_number = rand() % DATASIZE + 1;
iter = find(rand_vector.begin(), rand_vector.end(), rand_number);
if (iter != rand_vector.end())
continue;
rand_vector.push_back(rand_number);
index++;
}
}

 

posted on 2017-07-24 09:19  阿兴的平凡世界  阅读(319)  评论(0)    收藏  举报

导航