684
社区成员
发帖
与我相关
我的任务
分享std::vector<int> vecTest;
std::map<int,int> mapTest;
const int nTestCount = 5000000;
vecTest.resize(nTestCount);
for (int i = 0;i < nTestCount;i++)
{
vecTest[i] = i;
mapTest[i] = i;
}
DWORD dwTime1 = timeGetTime();
std::vector<int>::iterator iterVec = vecTest.begin();
for (;iterVec != vecTest.end();iterVec++)
{
}
DWORD vectimeCost = timeGetTime() - dwTime1;
dwTime1 = timeGetTime();
std::map<int,int>::iterator iterMap = mapTest.begin();
for (;iterMap != mapTest.end();iterMap++)
{
}
DWORD mapTimeCost = timeGetTime() - dwTime1;
std::cout << "VectorCost:" << vectimeCost << std::endl;
std::cout << "MapCost:" << mapTimeCost << std::endl;
vector好像不是简单的数组吧VectorCost:411
MapCost:748
请按任意键继续. . .VectorCost:16
MapCost:137
请按任意键继续. . .
_Myiter& operator++()
{ // preincrement
if (_Mytree::_Isnil(_Ptr))
; // end() shouldn't be incremented, don't move
else if (!_Mytree::_Isnil(_Mytree::_Right(_Ptr)))
_Ptr = _Mytree::_Min(
_Mytree::_Right(_Ptr)); // ==> smallest of right subtree
else
{ // climb looking for right subtree
_Nodeptr _Pnode;
while (!_Mytree::_Isnil(_Pnode = _Mytree::_Parent(_Ptr))
&& _Ptr == _Mytree::_Right(_Pnode))
_Ptr = _Pnode; // ==> parent while right subtree
_Ptr = _Pnode; // ==> parent (head if end())
}
return (*this);
}