俄女人大荫蒂毛茸茸_天堂√最新版中文在线地址_暴虐营妓np宫交_夜夜高潮夜夜爽高清视频一_成全免费高清观看在线剧情_97国产精品无码视频嫩草_每个世界都被强制爆炒_五个姿势夹到男人爽_精品久久国产字幕高潮

課程咨詢(xún): 400-996-5531 / 投訴建議: 400-111-8989

認(rèn)識(shí)達(dá)內(nèi)從這里開(kāi)始

認(rèn)真做教育 專(zhuān)心促就業(yè)

c++ vector 使用效率問(wèn)題

1. vector中的erase方法效率是很低。

因?yàn)闉榱吮3講ector中元素在內(nèi)存空間中的連續(xù)性,在刪除某個(gè)元素之后,需要將其后的元素依次向前移動(dòng)一個(gè)位置,平均復(fù)雜度為o(n)。

gcc 下erase的實(shí)現(xiàn)如下:

iterator erase(iteratorposition)

{

if (position + 1 != end())

copy(position + 1, finish, position); // 后續(xù)元素往前移動(dòng)

--finish;

destroy(finish); // 一個(gè)釋放資源的全局函數(shù)

return position;

}

解決辦法:

如果要?jiǎng)h除了元素在最后一個(gè)位置,則不需要移動(dòng)其他元素,只需要o(1)的時(shí)間開(kāi)銷(xiāo),基于這種思想,可以實(shí)現(xiàn)一種高效的vector中刪除元素的方法

for(int i=0; i

{

if( some condition )

{

swap( vec[i], vec[vec.size()-1]);

vec.pop_back();

}

else

{

i ++ ;

}

}

2.迭代器使用

vector int_vec;

for( vector::iterator iter = int_vec.begin(); iter != int_vec.end(); ++ iter)

{

}

千萬(wàn)注意要使用++iter 不能使用iter++

iter++ 是先拷貝一份值,再進(jìn)行++,效率很低

【免責(zé)聲明】本文部分系轉(zhuǎn)載,轉(zhuǎn)載目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)和對(duì)其真實(shí)性負(fù)責(zé)。如涉及作品內(nèi)容、版權(quán)和其它問(wèn)題,請(qǐng)?jiān)?0日內(nèi)與聯(lián)系我們,我們會(huì)予以更改或刪除相關(guān)文章,以保證您的權(quán)益!

相關(guān)推薦
最新資訊
免費(fèi)試聽(tīng)課程
  • 全部課程
  • IT課程
  • 設(shè)計(jì)課程
  • 運(yùn)營(yíng)課程
Free courses
最新開(kāi)班時(shí)間
  • 北京
  • 上海
  • 廣州
  • 深圳
  • 南京
  • 成都
  • 武漢
  • 西安
  • 青島
  • 天津
  • 杭州
  • 重慶
  • 哈爾濱
  • 濟(jì)南
  • 沈陽(yáng)
  • 合肥
  • 鄭州
  • 長(zhǎng)春
  • 蘇州
  • 長(zhǎng)沙
  • 昆明
  • 太原
  • 無(wú)錫
  • 石家莊
  • 南寧
  • 佛山
  • 珠海
  • 寧波
  • 保定
  • 呼和浩特
  • 洛陽(yáng)
  • 煙臺(tái)
  • 運(yùn)城
  • 濰坊
  • 開(kāi)課名稱(chēng)
  • 開(kāi)班時(shí)間
  • 搶座
  • 咨詢(xún)
  • 開(kāi)課名稱(chēng)
  • 開(kāi)班時(shí)間
  • 搶座
  • 咨詢(xún)
預(yù)約申請(qǐng)?jiān)嚶?tīng)課
收起