Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //VS 2019 Pro
- #include <iostream>
- #include <Windows.h>
- #include <vector>
- #include <list>
- /*
- Spoiler: Vector is best always
- */
- enum eMode
- {
- eVector,
- eList
- };
- eMode ArrayMode;
- void PushAmount(std::vector<int>& vVector, std::list<int>& vList, DWORD vSize)
- {
- switch (ArrayMode)
- {
- case eMode::eVector:
- for (DWORD i = 0; i < vSize; i++)
- {
- vVector.push_back(i);
- }
- break;
- case eMode::eList:
- for (DWORD i = 0; i < vSize; i++)
- {
- vList.push_back(i);
- }
- break;
- default:
- break;
- }
- }
- void Erase_By1_position(std::vector<int>& vVector, std::list<int>& vList, double vIndexPercent, DWORD vTimes, BOOL Enhancement = FALSE)
- {
- std::list<int>::iterator it1;
- int mid;
- switch (ArrayMode)
- {
- case eMode::eVector:
- for (int i = vTimes; i > 0; i--)
- {
- if (vIndexPercent == 0)
- {
- if (Enhancement)
- {
- //Insert Magic Here
- }
- else
- {
- vVector.erase(vVector.begin());
- }
- }
- else
- {
- if (vIndexPercent == 1)
- {
- vVector.erase(vVector.end() - 1);
- }
- else
- {
- if (Enhancement)
- {
- //Insert Magic Here
- }
- else
- {
- mid = (int)((vVector.size() - 1) * vIndexPercent);
- vVector.erase(vVector.begin() + mid);
- }
- }
- }
- }
- break;
- case eMode::eList:
- for (int i = vTimes; i > 0; i--)
- {
- if (vIndexPercent == 0)
- {
- vList.pop_front(); //tList.erase(tList.begin());
- }
- else
- {
- if (vIndexPercent == 1)
- {
- it1 = vList.end();
- --it1;
- vList.erase(it1);
- }
- else
- {
- it1 = vList.begin();
- mid = (int)((vList.size() - 1) * vIndexPercent);
- std::advance(it1, mid);
- vList.erase(it1);
- }
- }
- }
- break;
- default:
- break;
- }
- }
- int main()
- {
- ArrayMode = eMode::eVector;
- std::list<int> tList;
- std::vector<int> tVec;
- std::cin.get();
- DWORD GTC = GetTickCount();
- DWORD zSize = 0x05000000; //0x05000000;
- PushAmount(tVec, tList, zSize);
- if (tList.size() > 0) std::cout << tList.size() << " => " << GetTickCount() - GTC << std::endl;
- if (tVec.size() > 0) std::cout << tVec.size() << " => " << GetTickCount() - GTC << std::endl;
- int TotSize = zSize / 0x010000;
- /* 0%
- Vector:
- 83886080 => 359
- 83884800 => 48187
- Enhancement
- 83886080 => 312
- 83884800 => 312
- List:
- 83886080 => 4156
- 83884800 => 4156
- */
- Erase_By1_position(tVec, tList, 0, TotSize);
- /* 3%
- Vector:
- 83886080 => 359
- 83884800 => 48343
- Enhancement
- 83886080 => 313
- 83884800 => 1938
- List:
- 83886080 => 4156
- 83884800 => 14203
- */
- //Erase_By1_position(tVec, tList, 0.03, TotSize);
- /* 5%
- Vector:
- 83886080 => 344
- 83884800 => 46078
- Enhancement
- 83886080 => 312
- 83884800 => 3015
- List:
- 83886080 => 4234
- 83884800 => 20719
- */
- //Erase_By1_position(tVec, tList, 0.05, TotSize);
- /* 10%
- Vector:
- 83886080 => 344
- 83884800 => 43922
- Enhancement
- 83886080 => 313
- 83884800 => 5688
- List:
- 83886080 => 4218
- 83884800 => 37797
- */
- //Erase_By1_position(tVec, tList, 0.10, TotSize);
- /* 15%
- Vector:
- 83886080 => 344
- 83884800 => 42000
- Enhancement
- 83886080 => 312
- 83884800 => 8218
- List:
- 83886080 => 4281
- 83884800 => 53140
- */
- //Erase_By1_position(tVec, tList, 0.15, TotSize);
- /* 25%
- Vector:
- 83886080 => 328
- 83884800 => 35375
- Enhancement
- 83886080 => 313
- 83884800 => 13657
- List:
- 83886080 => 4125
- 83884800 => 84859
- */
- //Erase_By1_position(tVec, tList, 0.25, TotSize);
- /* 45%
- Vector:
- 83886080 => 312
- 83884800 => 25640
- Enhancement
- 83886080 => 328
- 83884800 => 24188
- List:
- 83886080 => 4078
- 83884800 => 147860
- */
- //Erase_By1_position(tVec, tList, 0.45, TotSize);
- /* 50%
- Vector:
- 83886080 => 375
- 83884800 => 23812
- Enhancement
- 83886080 => 312
- 83884800 => 23406
- List:
- 83886080 => 4468
- 83884800 => 172062
- */
- //Erase_By1_position(tVec, tList, 0.50, TotSize);
- /* 75%
- Vector:
- 83886080 => 359
- 83884800 => 12218
- Enhancement
- 83886080 => 328
- 83884800 => 11953
- List:
- 83886080 => 4204
- 83884800 => 239954
- */
- //Erase_By1_position(tVec, tList, 0.75, TotSize);
- /* 85%
- Vector:
- 83886080 => 313
- 83884800 => 7282
- Enhancement
- 83886080 => 313
- 83884800 => 7204
- List:
- 83886080 => 4157
- 83884800 => 280016
- */
- //Erase_By1_position(tVec, tList, 0.85, TotSize);
- /* 95%
- Vector:
- 83886080 => 312
- 83884800 => 2609
- Enhancement
- 83886080 => 312
- 83884800 => 2609
- List:
- 83886080 => 4094
- 83884800 => 295234
- */
- //Erase_By1_position(tVec, tList, 0.95, TotSize);
- /* 100%
- Vector:
- 83886080 => 312
- 83884800 => 312
- Enhancement
- 83886080 => 313
- 83884800 => 313
- List:
- 83886080 => 4109
- 83884800 => 4109
- */
- //Erase_By1_position(tVec, tList, 1, TotSize);
- if (tList.size() > 0)
- {
- std::cout << std::dec << tList.size() << " => " << GetTickCount() - GTC << std::endl;
- std::list<int>::iterator it_begin = tList.begin();
- std::list<int>::iterator it_last = tList.end();
- --it_last;
- std::cout << *it_begin << " - " << *it_last << std::endl;
- }
- if (tVec.size() > 0)
- {
- std::cout << std::dec << tVec.size() << " => " << GetTickCount() - GTC << std::endl;
- std::cout << tVec[0] << " - " << tVec[tVec.size() - 1] << std::endl;
- /*for (int i = 0; i < tVec.size(); i++)
- {
- std::cout << tVec[i] << " - ";
- }*/
- }
- std::cin.get();
- std::cout << "clearing and shrinking" << std::endl;
- tVec.clear();
- tVec.shrink_to_fit();
- std::cin.get();
- return 0;
- }
Add Comment
Please, Sign In to add comment