如果有如下定義:vector<string> svec1(10);vector<string> svec2(24);svec1.swap(svec2);執(zhí)行后,svec1中有24個(gè)元素,但svec1中原來(lái)只有10個(gè)元素,系統(tǒng)原來(lái)給svec1分配的內(nèi)存空間可能不足保存24個(gè)元素,當(dāng)不足時(shí),不是要為svec1重新分配內(nèi)存空間嗎?(雖然在交換之前,系統(tǒng)給svec1分配大于可以保存10個(gè)元素的內(nèi)存空間,但有vector<string> svec1(10);vector<string> svec2(1000);svec1.swap(svec2);時(shí),迭代器還是不會(huì)失效。為什么會(huì)這樣?swap工作的原理究竟是怎樣的?
為什么swap函數(shù)(STL)不會(huì)使迭代器失效?
婷婷同學(xué)_
2019-02-04 09:05:08