文章來源:http://www.mianshibaike.com/a/C_C__/C__/20130710/301_2.html,轉載請注明。 1、vector和list的差別 差別:1)vector的對象實在一塊連續的記憶體空間上,而list的對象可以不在來連續的記憶體空間上。 2)vector元素的随機通路的效率很高,插入和删除效率較低,當vector存儲的對象的構造較為複雜時,移動vector的元素需要調用對象的拷貝構造函數,效率因而很低。vector是離散存儲的,通路元素時需要從頭或者尾部開始時進行周遊(不能随機通路),删除和插入元素相比vector的效率高,不需要移動元素。vector的大小擴張通常是2倍的擴充。 3)vector是單向的,list是雙向的。 4)vector适用:對象數量變化少,簡單對象,随機通路元素頻繁;list适用:對象數量變化大,對象複雜,插入和删除頻繁。 2、C++中const的一些常用方法 1)定義一個隻讀的變量。(而非一個常量) 2)修飾函數的參數。當我們希望函數的實參不被改變時,用const修飾函數的形參,防止實參發生改變,特别是指針參數,防 止指針本身發生改變。 3)修飾類的成員函數,可以防止類的資料成員和this指針發生改變。 4 )修飾一個類的對象。 例如:const CMyClass mc,這時的mc對類成員變量和成員函數的調用是有限制的: a、能讀取類的成員變量而不能去修改它; b、隻能調用末端有const修飾的函數。 3、輸出數組的K個最大值 使用STL中的partial_sort. partial_sort使用的是堆排序,建堆的時間複雜度為O(n),調整堆的時間度雜度為o(logn),如果調用partial_sort時middle的值為last的值,則相當于調用sort,對所有元素排序,但是堆排序是穩定的排序。假如求的是m個元素的partial_sort,則,o(n) + m*o(logn); 相比使用sort()函數使用的快速排序,其時間複雜度為n(logn)。 4、對連結清單進行排序 struct Node { int key; Node *next }; 5、 給出隻允許程序單例運作的代碼 在linux/unix環境下通過檔案所實作,見APUE-單執行個體守護程序。 為了正常運作,某些守護程序時實作為單執行個體的,也就是在忍一時刻隻運作該守護程序的一個副本。例如,該守護程序可能需要互斥的通路一個裝置。在cron守護進城的情況下,如果同時有多個實力運作,那麼每個飛奔都可能試圖開始某個預定的操作,于是造成了該作業系統的重複執行,很可能導緻出錯。
|