STL chips

hash_map与map性能对比


hash_map和map的选择,hash_map善于查找,map善于添加和删除,这个没问题,关键是数据:

http://blog.sina.com.cn/s/blog_5378b2830100c5a4.html

关键数据如下:10万级

hash_map(10万)map(10万)hash_map(20万)map(20万)hash_map(30万)map(30万)
添加 93 47 156 94 203 172
遍 历16 15 16 16 16 15
查找 0 0 32 31 31 32
删除8422 32 33765 63 76016 78

百万级:

hash_map(100万)map(100万)hash_map(200万)map(200万)hash_map(300万)map(300万)
遍历 94 31 203 32 297 47
查找 94 234 188 531 281 875


如果使用vector的第一个元素,使用front()比operator[0]要更好。

operator[]里面操作比front多太多了.

vector的swap函数也很不错,是把里面所有的东西进行交换,内部实现是:

if (this->_Alval == _Right._Alval) { // same allocator, swap control information #if _HAS_ITERATOR_DEBUGGING this->_Swap_all(_Right); #endif /* _HAS_ITERATOR_DEBUGGING */ std::swap(_Myfirst, _Right._Myfirst); std::swap(_Mylast, _Right._Mylast); std::swap(_Myend, _Right._Myend); } else { // different allocator, do multiple assigns _Myt _Ts = *this; *this = _Right, _Right = _Ts; }

请仔细阅读和分析下面函数,进行优化后,采用C/C++11标准,完整推导并重构可编译的全部代码 特别注意: 1.保持所有原始功能不变 2.提高执行效率,降低计算复杂度 3.已经给定的结构体名字和元素不要更改,详细的中文注释 4.自动添加中文注释说明功能逻辑 5.不使用 auto,使用显式 for 循环 6.结构体采用32位定义 7.不要使用小函数,保持原始的函数定义 函数中的 HDDMXng::Chip::Chip 映射为 message Chip { optional uint32 numsites = 1; optional uint32 numrows = 2; optional uint32 numcols = 3; optional uint32 rpmgridx = 4; optional uint32 rpmgridy = 5; optional sint32 extremaxmin = 6; optional sint32 extremaxmax = 7; optional sint32 extremaymin = 8; optional sint32 extremaymax = 9; optional string chip = 10; optional string arch = 11; } 将 _BYTE chip_msg[8] 映射为 HDDMXng::Chip chip_msg; void __cdecl HDDMDevice::readchip_pb(HDDMDevice *this, HDDMChipDesc *hddmChipDesc) { HDDMChipType *v2; // eax HDDMDevice *v3; // eax HDDMChipType *v4; // eax int v5; // esi int pHDDMChip; // ebp char *dword214; // esi int dword220; // ebp int v9; // edi void *v10; // esi __int16 v11; // dx __int16 v12; // dx int dword9C; // edi unsigned int *v14; // esi int v15; // edx int v16; // ecx int v17; // ecx char *v18; // esi int v19; // ebp void *v20; // edi int dwordA0; // edi int v22; // esi int v23; // edx int v24; // ecx int v25; // ecx char *v26; // esi int v27; // ebp void *v28; // edi _BYTE *dword210; // ecx size_t v30; // ebp int v31; // edi unsigned int v32; // eax unsigned int v33; // edi char *v34; // edi HDDMChip **dest; // edx HDDMChip **v36; // eax _DWORD *v37; // esi void *v38; // eax int v39; // edi int v40; // ebp int pHDDMChipType; // esi HDDMChipType **v42; // eax HDDMChipType *v43; // eax int v44; // edi __int16 v45; // dx int v46; // esi void *src; // [esp+4h] [ebp-218h] const char *srca; // [esp+4h] [ebp-218h] const char *srcb; // [esp+4h] [ebp-218h] const char *srcc; // [esp+4h] [ebp-218h] const char *srcd; // [esp+4h] [ebp-218h] void *srce; // [esp+4h] [ebp-218h] char **n; // [esp+8h] [ebp-214h] _DWORD *v54; // [esp+Ch] [ebp-210h] char *v55; // [esp+1Ch] [ebp-200h] char *v56; // [esp+1Ch] [ebp-200h] char *v57; // [esp+1Ch] [ebp-200h] HDDMChip **v58; // [esp+1Ch] [ebp-200h] HDDMChip **v59; // [esp+1Ch] [ebp-200h] unsigned int i; // [esp+20h] [ebp-1FCh] unsigned int j; // [esp+20h] [ebp-1FCh] int v62; // [esp+24h] [ebp-1F8h] int v63; // [esp+24h] [ebp-1F8h] HDDMChip *v64; // [esp+28h] [ebp-1F4h] bool v65; // [esp+2Fh] [ebp-1EDh] char *v66; // [esp+34h] [ebp-1E8h] char *v67; // [esp+34h] [ebp-1E8h] int NumTiles; // [esp+38h] [ebp-1E4h] int NumSites; // [esp+38h] [ebp-1E4h] int v70; // [esp+3Ch] [ebp-1E0h] int v71; // [esp+3Ch] [ebp-1E0h] __int16 v72; // [esp+4Ch] [ebp-1D0h] BYREF __int16 v73; // [esp+4Eh] [ebp-1CEh] HDDMChipType *v74; // [esp+50h] [ebp-1CCh] BYREF char *v75; // [esp+60h] [ebp-1BCh] BYREF char *v76; // [esp+70h] [ebp-1ACh] BYREF char *v77; // [esp+80h] [ebp-19Ch] BYREF char *v78; // [esp+84h] [ebp-198h] BYREF char *v79; // [esp+88h] [ebp-194h] BYREF char *v80; // [esp+8Ch] [ebp-190h] BYREF char v81[4]; // [esp+90h] [ebp-18Ch] BYREF __int16 v82; // [esp+94h] [ebp-188h] char v83[6]; // [esp+A0h] [ebp-17Ch] BYREF __int16 v84; // [esp+A6h] [ebp-176h] _DWORD v85[4]; // [esp+B0h] [ebp-16Ch] BYREF _DWORD v86[2]; // [esp+C0h] [ebp-15Ch] BYREF _BYTE v87[16]; // [esp+D0h] [ebp-14Ch] BYREF int v88; // [esp+E0h] [ebp-13Ch] void *v89; // [esp+E4h] [ebp-138h] _BYTE v90[24]; // [esp+E8h] [ebp-134h] BYREF _BYTE v91[24]; // [esp+100h] [ebp-11Ch] BYREF _BYTE v92[24]; // [esp+118h] [ebp-104h] BYREF _BYTE v93[16]; // [esp+130h] [ebp-ECh] BYREF _BYTE *v94; // [esp+140h] [ebp-DCh] _BYTE *v95; // [esp+144h] [ebp-D8h] int v96; // [esp+148h] [ebp-D4h] _BYTE chip_msg[8]; // [esp+150h] [ebp-CCh] BYREF int v98; // [esp+158h] [ebp-C4h] int v99; // [esp+15Ch] [ebp-C0h] int v100; // [esp+160h] [ebp-BCh] int v101; // [esp+164h] [ebp-B8h] int v102; // [esp+168h] [ebp-B4h] int v103; // [esp+16Ch] [ebp-B0h] int v104; // [esp+170h] [ebp-ACh] int v105; // [esp+174h] [ebp-A8h] int v106; // [esp+178h] [ebp-A4h] int v107; // [esp+180h] [ebp-9Ch] _BYTE v108[8]; // [esp+198h] [ebp-84h] BYREF int v109[31]; // [esp+1A0h] [ebp-7Ch] BYREF isl::iostreams::filtering_stream<boost::iostreams::input,char,stlp_std::char_traits<char>,stlp_std::allocator<char>,boost::iostreams::public_>::filtering_stream( v108, *((_DWORD *)hddmChipDesc + 20), 4, 0); sub_8D8DC4(); HDDMXng::Chip::Chip((HDDMXng::Chip *)chip_msg); HDDMDevice::readMessage((int)v109, (google::protobuf::Message *)chip_msg); v2 = *(HDDMChipType **)stlp_std::map<stlp_std::basic_string<char,stlp_std::char_traits<char>,stlp_std::allocator<char>>,HDDMChipType *,stlp_std::less<stlp_std::basic_string<char,stlp_std::char_traits<char>,stlp_std::allocator<char>>>,stlp_std::allocator<stlp_std::pair<stlp_std::basic_string<char,stlp_std::char_traits<char>,stlp_std::allocator<char>> const,HDDMChipType *>>>::operator[]<stlp_std::basic_string<char,stlp_std::char_traits<char>,stlp_std::allocator<char>>>( &this->char1F8, hddmChipDesc); *((_DWORD *)hddmChipDesc + 21) = v2; v74 = v2; v65 = v2 == 0; if ( !v2 ) { v40 = (this->dword1F0 - this->dword1EC) >> 2; stlp_std::basic_string<char,stlp_std::char_traits<char>,stlp_std::allocator<char>>::basic_string(v90, v106); pHDDMChipType = operator new(0x78u); HDDMChipType::HDDMChipType(pHDDMChipType, this, v40, v90); *((_DWORD *)hddmChipDesc + 21) = pHDDMChipType; stlp_std::priv::_String_base<char,stlp_std::allocator<char>>::_M_deallocate_block(v90); v74 = (HDDMChipType *)*((_DWORD *)hddmChipDesc + 21); stlp_std::vector<HDDMChipType *,stlp_std::allocator<HDDMChipType *>>::push_back(&this->dword1EC, &v74); HDDMChipType::getName((HDDMChipType *)v91); v42 = (HDDMChipType **)stlp_std::map<stlp_std::basic_string<char,stlp_std::char_traits<char>,stlp_std::allocator<char>>,HDDMChipType *,stlp_std::less<stlp_std::basic_string<char,stlp_std::char_traits<char>,stlp_std::allocator<char>>>,stlp_std::allocator<stlp_std::pair<stlp_std::basic_string<char,stlp_std::char_traits<char>,stlp_std::allocator<char>> const,HDDMChipType *>>>::operator[]<stlp_std::basic_string<char,stlp_std::char_traits<char>,stlp_std::allocator<char>>>( &this->char1F8, v91); *v42 = v74; stlp_std::priv::_String_base<char,stlp_std::allocator<char>>::_M_deallocate_block(v91); v43 = v74; v44 = v98; *((_DWORD *)v74 + 9) = v98; *((_WORD *)v43 + 22) = v101; *((_WORD *)v43 + 23) = v102; v45 = v100; LOWORD(pHDDMChipType) = v99; *((_DWORD *)v43 + 8) = v100 * v99; *((_WORD *)v43 + 20) = v45; *((_WORD *)v43 + 21) = pHDDMChipType; v94 = v93; v95 = v93; v93[0] = 0; stlp_std::vector<stlp_std::basic_string<char,stlp_std::char_traits<char>,stlp_std::allocator<char>>,stlp_std::allocator<stlp_std::basic_string<char,stlp_std::char_traits<char>,stlp_std::allocator<char>>>>::resize( (char *)v43 + 60, v44, v93); stlp_std::priv::_String_base<char,stlp_std::allocator<char>>::_M_deallocate_block(v93); v94 = v93; v95 = v93; v93[0] = 0; stlp_std::vector<stlp_std::basic_string<char,stlp_std::char_traits<char>,stlp_std::allocator<char>>,stlp_std::allocator<stlp_std::basic_string<char,stlp_std::char_traits<char>,stlp_std::allocator<char>>>>::resize( (char *)v74 + 48, *((_DWORD *)v74 + 8), v93); stlp_std::priv::_String_base<char,stlp_std::allocator<char>>::_M_deallocate_block(v93); } v3 = this; if ( !this->isXngd ) { if ( (char *)v106 != &this->archFilePath ) stlp_std::basic_string<char,stlp_std::char_traits<char>,stlp_std::allocator<char>>::_M_assign( (int)&this->archFilePath, *(void **)(v106 + 20), *(_DWORD *)(v106 + 16)); *(_DWORD *)&this->nDeviceCode = (16 * (v98 & 0x3FFFFF)) | *(_DWORD *)&this->nDeviceCode & 0xFC00000F; this->word4 = v99; this->word6 = v100; this->word8 = v101; this->wordA = v102; this->dword10 = v103; this->dword14 = v104; this->dword18 = v105; this->dword1C = v107; v4 = v74; this->dword94 = (char *)v74 + 96; this->dword98 = (char *)v4 + 72; v3 = this; } v5 = (v3->dword214 - v3->dword210) >> 2; stlp_std::basic_string<char,stlp_std::char_traits<char>,stlp_std::allocator<char>>::basic_string( v92, (int)hddmChipDesc + 24); pHDDMChip = operator new(0x3Cu); HDDMChip::HDDMChip(pHDDMChip, this, v5, v92, v74); *((_DWORD *)hddmChipDesc + 22) = pHDDMChip; stlp_std::priv::_String_base<char,stlp_std::allocator<char>>::_M_deallocate_block(v92); v64 = (HDDMChip *)*((_DWORD *)hddmChipDesc + 22); dword214 = (char *)this->dword214; if ( dword214 != (char *)this->dword218 ) { *(_DWORD *)dword214 = *((_DWORD *)hddmChipDesc + 22); this->dword214 += 4; goto LABEL_9; } dword210 = (_BYTE *)this->dword210; v30 = dword214 - dword210; v31 = 1; v32 = (dword214 - dword210) >> 2; if ( v32 ) v31 = (dword214 - dword210) >> 2; v33 = v32 + v31; if ( v33 > 0x3FFFFFFF || v32 > v33 ) { v39 = -4; LABEL_71: dest = (HDDMChip **)stlp_std::__malloc_alloc::allocate((stlp_std::__malloc_alloc *)v39, (unsigned int)src); dword210 = (_BYTE *)this->dword210; v30 = dword214 - dword210; v34 = (char *)dest + (v39 & 0xFFFFFFFC); goto LABEL_65; } if ( v33 ) { v39 = 4 * v33; goto LABEL_71; } v34 = 0; dest = 0; LABEL_65: v36 = dest; if ( v30 ) { v58 = dest; v36 = (HDDMChip **)((char *)memmove(dest, dword210, v30) + v30); dest = v58; } *v36 = v64; v37 = v36 + 1; v38 = (void *)this->dword210; if ( v38 ) { v59 = dest; free(v38); dest = v59; } this->dword210 = dest; this->dword214 = v37; this->dword218 = v34; LABEL_9: HDDMChip::getName((HDDMChip *)v87); dword220 = this->dword220; if ( !dword220 ) { v55 = &this->char21C; LABEL_58: stlp_std::basic_string<char,stlp_std::char_traits<char>,stlp_std::allocator<char>>::basic_string(v93, (int)v87); v96 = 0; v75 = v55; v54 = v93; n = &v75; stlp_std::priv::_Rb_tree<stlp_std::basic_string<char,stlp_std::char_traits<char>,stlp_std::allocator<char>>,stlp_std::less<stlp_std::basic_string<char,stlp_std::char_traits<char>,stlp_std::allocator<char>>>,stlp_std::pair<stlp_std::basic_string<char,stlp_std::char_traits<char>,stlp_std::allocator<char>> const,HDDMChip *>,stlp_std::priv::_Select1st<stlp_std::pair<stlp_std::basic_string<char,stlp_std::char_traits<char>,stlp_std::allocator<char>> const,HDDMChip *>>,stlp_std::priv::_MapTraitsT<stlp_std::pair<stlp_std::basic_string<char,stlp_std::char_traits<char>,stlp_std::allocator<char>> const,HDDMChip *>>,stlp_std::allocator<stlp_std::pair<stlp_std::basic_string<char,stlp_std::char_traits<char>,stlp_std::allocator<char>> const,HDDMChip *>>>::insert_unique(&v78); v55 = v78; stlp_std::priv::_String_base<char,stlp_std::allocator<char>>::_M_deallocate_block(v93); goto LABEL_16; } v9 = v88; v10 = v89; v55 = &this->char21C; do { while ( stlp_std::basic_string<char,stlp_std::char_traits<char>,stlp_std::allocator<char>>::_M_compare( *(void **)(dword220 + 36), *(_DWORD *)(dword220 + 32), v10, v9) >= 0 ) { v55 = (char *)dword220; dword220 = *(_DWORD *)(dword220 + 8); if ( !dword220 ) goto LABEL_14; } dword220 = *(_DWORD *)(dword220 + 12); } while ( dword220 ); LABEL_14: if ( &this->char21C == v55 || stlp_std::basic_string<char,stlp_std::char_traits<char>,stlp_std::allocator<char>>::_M_compare( v10, v9, *((void **)v55 + 9), *((_DWORD *)v55 + 8)) < 0 ) { goto LABEL_58; } LABEL_16: *((_DWORD *)v55 + 10) = v64; stlp_std::priv::_String_base<char,stlp_std::allocator<char>>::_M_deallocate_block(v87); *((_DWORD *)v64 + 9) = *((_DWORD *)hddmChipDesc + 23); *((_DWORD *)v64 + 10) = *((_DWORD *)hddmChipDesc + 24); *((_DWORD *)v64 + 12) = *((_DWORD *)hddmChipDesc + 13); HDDMChipType::getTileGridExtent((HDDMChipType *)&v72); v11 = *((_WORD *)hddmChipDesc + 27) + v73; *((_WORD *)v64 + 22) = *((_WORD *)hddmChipDesc + 26) + v72; *((_WORD *)v64 + 23) = v11; *((_DWORD *)v64 + 14) = *((_DWORD *)hddmChipDesc + 12); HDDMChipType::getRpmGridExtent((HDDMChipType *)&v72); v12 = *((_WORD *)hddmChipDesc + 25) + v73; *((_WORD *)v64 + 26) = *((_WORD *)hddmChipDesc + 24) + v72; *((_WORD *)v64 + 27) = v12; if ( !this->dword9C ) HDDMDevice::allocatesupersites(this); NumTiles = HDDMChipType::getNumTiles(v74); if ( NumTiles ) { v62 = 0; for ( i = 0; i != NumTiles; ++i ) { dword9C = this->dword9C; v14 = (unsigned int *)(dword9C + 48 * (i + HDDMChip::getMinTileIndex(v64))); HDDMTile::readme_pb(v14, v109); v14[11] = HDDMChip::getIndex(v64); v14[1] = (v14[1] + HDDMChip::getMinSiteIndex(v64)) & 0x3FFFFF | v14[1] & 0xFFC00000; *v14 = (4 * (((*v14 >> 2) + *((__int16 *)hddmChipDesc + 28)) & 0x1FFFFFF)) | *v14 & 0xF8000003; v14[2] += *((__int16 *)hddmChipDesc + 29); if ( !v65 ) { v94 = v93; v95 = v93; v93[0] = 0; stlp_std::priv::_String_base<char,stlp_std::allocator<char>>::_M_swap(v93, v14 + 3); stlp_std::priv::_String_base<char,stlp_std::allocator<char>>::_M_deallocate_block(v93); goto LABEL_31; } v15 = *((_DWORD *)v74 + 12); if ( i >= -1431655765 * ((*((_DWORD *)v74 + 13) - v15) >> 3) ) { v46 = stlp_std::__stl_throw_out_of_range((stlp_std *)"vector", srca); operator delete(v64); goto LABEL_74; } stlp_std::priv::_String_base<char,stlp_std::allocator<char>>::_M_swap(v62 + v15, v14 + 3); v16 = *((_DWORD *)v74 + 12); if ( i >= -1431655765 * ((*((_DWORD *)v74 + 13) - v16) >> 3) ) { v46 = stlp_std::__stl_throw_out_of_range((stlp_std *)"vector", srcb); LABEL_74: stlp_std::priv::_String_base<char,stlp_std::allocator<char>>::_M_deallocate_block(dword9C); goto LABEL_75; } v17 = v62 + v16; v70 = v17; v66 = (char *)v74 + 72; v18 = (char *)*((_DWORD *)v74 + 19); if ( v18 ) { v19 = *(_DWORD *)(v17 + 16); v20 = *(void **)(v17 + 20); v56 = (char *)v74 + 72; do { while ( stlp_std::basic_string<char,stlp_std::char_traits<char>,stlp_std::allocator<char>>::_M_compare( *(void **)(*((_DWORD *)v18 + 4) + 20), *(_DWORD *)(*((_DWORD *)v18 + 4) + 16), v20, v19) >= 0 ) { v56 = v18; v18 = (char *)*((_DWORD *)v18 + 2); if ( !v18 ) goto LABEL_28; } v18 = (char *)*((_DWORD *)v18 + 3); } while ( v18 ); LABEL_28: if ( v66 != v56 && stlp_std::basic_string<char,stlp_std::char_traits<char>,stlp_std::allocator<char>>::_M_compare( v20, v19, *(void **)(*((_DWORD *)v56 + 4) + 20), *(_DWORD *)(*((_DWORD *)v56 + 4) + 16)) >= 0 ) { goto LABEL_30; } } else { v56 = (char *)v74 + 72; } v85[0] = v70; v85[1] = 0; v76 = v56; v54 = v85; n = &v76; stlp_std::priv::_Rb_tree<stlp_std::basic_string<char,stlp_std::char_traits<char>,stlp_std::allocator<char>> const*,HDDMChipType::_DerefStringPtrLessThan,stlp_std::pair<stlp_std::basic_string<char,stlp_std::char_traits<char>,stlp_std::allocator<char>> const* const,unsigned int>,stlp_std::priv::_Select1st<stlp_std::pair<stlp_std::basic_string<char,stlp_std::char_traits<char>,stlp_std::allocator<char>> const* const,unsigned int>>,stlp_std::priv::_MapTraitsT<stlp_std::pair<stlp_std::basic_string<char,stlp_std::char_traits<char>,stlp_std::allocator<char>> const* const,unsigned int>>,stlp_std::allocator<stlp_std::pair<stlp_std::basic_string<char,stlp_std::char_traits<char>,stlp_std::allocator<char>> const* const,unsigned int>>>::insert_unique(&v79); v56 = v79; LABEL_30: *((_DWORD *)v56 + 5) = i; LABEL_31: v62 += 24; } } if ( !this->dwordA0 ) HDDMDevice::allocatesites(this); NumSites = HDDMChipType::getNumSites(v74); if ( NumSites ) { v63 = 0; for ( j = 0; j != NumSites; ++j ) { dwordA0 = this->dwordA0; v22 = dwordA0 + 36 * (j + HDDMChip::getMinSiteIndex(v64)); HDDMSite::readme_pb(v22, v109); *(_DWORD *)(v22 + 32) = HDDMChip::getIndex(v64); *(_DWORD *)v22 = (4 * (((*(_DWORD *)v22 >> 2) + HDDMChip::getMinTileIndex(v64)) & 0x3FFFFF)) | *(_DWORD *)v22 & 0xFF000003; if ( *(char *)(v22 + 7) >= 0 ) { HDDMChip::getRpmGridRect((HDDMChip *)v81); *(_WORD *)(v22 + 4) = (v82 + *(_WORD *)(v22 + 4)) & 0xFFF | *(_WORD *)(v22 + 4) & 0xF000; srcc = (const char *)v64; HDDMChip::getRpmGridRect((HDDMChip *)v83); *(_DWORD *)(v22 + 4) = ((((unsigned __int16)(*(_DWORD *)(v22 + 4) >> 12) + v84) & 0xFFF) << 12) | *(_DWORD *)(v22 + 4) & 0xFF000FFF; } if ( !v65 ) { v94 = v93; v95 = v93; v93[0] = 0; stlp_std::priv::_String_base<char,stlp_std::allocator<char>>::_M_swap(v93, v22 + 8); stlp_std::priv::_String_base<char,stlp_std::allocator<char>>::_M_deallocate_block(v93); goto LABEL_49; } v23 = *((_DWORD *)v74 + 15); if ( -1431655765 * ((*((_DWORD *)v74 + 16) - v23) >> 3) <= j ) goto LABEL_78; stlp_std::priv::_String_base<char,stlp_std::allocator<char>>::_M_swap(v63 + v23, v22 + 8); v24 = *((_DWORD *)v74 + 15); if ( -1431655765 * ((*((_DWORD *)v74 + 16) - v24) >> 3) <= j ) { stlp_std::__stl_throw_out_of_range((stlp_std *)"vector", srcd); LABEL_78: v46 = stlp_std::__stl_throw_out_of_range((stlp_std *)"vector", srcc); stlp_std::priv::_String_base<char,stlp_std::allocator<char>>::_M_deallocate_block(v63); LABEL_75: HDDMXng::Chip::~Chip((HDDMXng::Chip *)chip_msg); isl::iostreams::filtering_stream<boost::iostreams::input,char,stlp_std::char_traits<char>,stlp_std::allocator<char>,boost::iostreams::public_>::~filtering_stream(v108); _Unwind_Resume(v46, srce, n, v54); } v25 = v63 + v24; v71 = v25; v67 = (char *)v74 + 96; v26 = (char *)*((_DWORD *)v74 + 25); if ( v26 ) { v27 = *(_DWORD *)(v25 + 16); v28 = *(void **)(v25 + 20); v57 = (char *)v74 + 96; do { while ( stlp_std::basic_string<char,stlp_std::char_traits<char>,stlp_std::allocator<char>>::_M_compare( *(void **)(*((_DWORD *)v26 + 4) + 20), *(_DWORD *)(*((_DWORD *)v26 + 4) + 16), v28, v27) >= 0 ) { v57 = v26; v26 = (char *)*((_DWORD *)v26 + 2); if ( !v26 ) goto LABEL_46; } v26 = (char *)*((_DWORD *)v26 + 3); } while ( v26 ); LABEL_46: if ( v57 != v67 && stlp_std::basic_string<char,stlp_std::char_traits<char>,stlp_std::allocator<char>>::_M_compare( v28, v27, *(void **)(*((_DWORD *)v57 + 4) + 20), *(_DWORD *)(*((_DWORD *)v57 + 4) + 16)) >= 0 ) { goto LABEL_48; } } else { v57 = (char *)v74 + 96; } v86[0] = v71; v86[1] = 0; v77 = v57; v54 = v86; n = &v77; stlp_std::priv::_Rb_tree<stlp_std::basic_string<char,stlp_std::char_traits<char>,stlp_std::allocator<char>> const*,HDDMChipType::_DerefStringPtrLessThan,stlp_std::pair<stlp_std::basic_string<char,stlp_std::char_traits<char>,stlp_std::allocator<char>> const* const,unsigned int>,stlp_std::priv::_Select1st<stlp_std::pair<stlp_std::basic_string<char,stlp_std::char_traits<char>,stlp_std::allocator<char>> const* const,unsigned int>>,stlp_std::priv::_MapTraitsT<stlp_std::pair<stlp_std::basic_string<char,stlp_std::char_traits<char>,stlp_std::allocator<char>> const* const,unsigned int>>,stlp_std::allocator<stlp_std::pair<stlp_std::basic_string<char,stlp_std::char_traits<char>,stlp_std::allocator<char>> const* const,unsigned int>>>::insert_unique(&v80); v57 = v80; LABEL_48: *((_DWORD *)v57 + 5) = j; LABEL_49: v63 += 24; } } HDDMXng::Chip::~Chip((HDDMXng::Chip *)chip_msg); isl::iostreams::filtering_stream<boost::iostreams::input,char,stlp_std::char_traits<char>,stlp_std::allocator<char>,boost::iostreams::public_>::~filtering_stream(v108); }
10-06
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值