stl提供了三個最基本的容器:vector,list,deque。
vector和built-in數組類似,它擁有一段連續的內存空間,並且起始地址不變,因此
它能非常好的支持隨即存取,即[]操作符,但由於它的內存空間是連續的,所以在中間
進行插入和刪除會造成內存塊的拷貝,另外,當該數組後的內存空間不夠時,需要重新
申請一塊足夠大的內存並進行內存的拷貝。這些都大大影響了vector的效率。
list就是數據結構中的雙向鏈表(根據sgi stl源代碼),因此它的內存空間可以是不連續
的,通過指針來進行數據的訪問,這個特點使得它的隨即存取變的非常沒有效率,因此它
沒有提供[]操作符的重載。但由於鏈表的特點,它可以以很好的效率支持任意地方的刪除
和插入。
deque是一個double-ended queue,它的具體實現不太清楚,但知道它具有以下兩個特點:
它支持[]操作符,也就是支持隨即存取,並且和vector的效率相差無幾,它支持在兩端的
操作:push_back,push_front,pop_back,pop_front等,並且在兩端操作上與list的效率
也差不多。
因此在實際使用時,如何選擇這三個容器中哪一個,應根據你的需要而定,一般應遵循下面
的原則:
1、如果你需要高效的隨即存取,而不在乎插入和刪除的效率,使用vector
2、如果你需要大量的插入和刪除,而不關心隨即存取,則應使用list
3、如果你需要隨即存取,而且關心兩端數據的插入和刪除,則應使用deque。
figer 發表在 痞客邦 留言(0) 人氣(785)
撥放器本身就是一個很有難度的東西
從早期的 RealOne 到 TTPlayer(千千靜聽) 到 MediaMonkey
figer 發表在 痞客邦 留言(0) 人氣(68)
2聲道 能讓聲音表現成這樣,真的很屌
剛上電後,把音量調到最大,安靜無聲,一絲電流都沒有,屌
figer 發表在 痞客邦 留言(0) 人氣(1,961)
因為要用 VC2008 Express 來使用MFC
figer 發表在 痞客邦 留言(0) 人氣(649)
問題描述:
在Windows7 下配合 VC6 來使用 OpenCV1.0 的時候,想要使用DLL來讓 GUI 程式 使用
可是沒想到不知道為什麼一直無法正常執行
結果發現 在 LoadLibrary 所傳回的值一直是不正確的
查了很久也沒個答案,索性把 OpenCV1.0提供的 DLL 放到同個目錄下執行,結果就成功了...
解決方法:
把 DLL 整個複製過去就可以執行
P.S.
有可能是在系統路徑那邊沒有指到OpenCV1.0存放DLL 的路徑所造成
所以如果有指定正確應該可以正常執行
figer 發表在 痞客邦 留言(0) 人氣(231)
介紹的很詳細,還有附 java code
http://www.labbookpages.co.uk/software/imgProc/otsuThreshold.html
public class OtsuThresholder
{
private int histData[];
private int maxLevelValue;
private int threshold;
public OtsuThresholder()
{
histData = new int[256];
}
public int[] getHistData()
{
return histData;
}
public int getMaxLevelValue()
{
return maxLevelValue;
}
public int getThreshold()
{
return threshold;
}
public int doThreshold(byte[] srcData, byte[] monoData)
{
int ptr;
// Clear histogram data
// Set all values to zero
ptr = 0;
while (ptr < histData.length) histData[ptr++] = 0;
// Calculate histogram and find the level with the max value
// Note: the max level value isn't required by the Otsu method
ptr = 0;
maxLevelValue = 0;
while (ptr < srcData.length)
{
/// read the intensity of each pixel and then record
/// occur times in the histogram
int h = 0xFF & srcData[ptr];
histData[h] ++;
/// record which value is the most occurrence in histogram
if (histData[h] > maxLevelValue) maxLevelValue = histData[h];
ptr ++;
}
// Total number of pixels
int total = srcData.length;
float sum = 0;
for (int t=0 ; t<256 ; t++) sum += t * histData[t];
float sumB = 0;
int wB = 0;
int wF = 0;
float varMax = 0;
threshold = 0;
/// Calculate intensity from 0-255 to find out the maximum
for (int t=0 ; t<256 ; t++)
{
wB += histData[t]; // Weight Background
if (wB == 0) continue;
wF = total - wB; // Weight Foreground
if (wF == 0) break;
sumB += (float) (t * histData[t]);
float mB = sumB / wB; // Mean Background
float mF = (sum - sumB) / wF; // Mean Foreground
// Calculate Between Class Variance
float varBetween = (float)wB * (float)wF * (mB - mF) * (mB - mF);
// Check if new maximum found
if (varBetween > varMax) {
varMax = varBetween;
threshold = t;
}
}
// Apply threshold to create binary image
if (monoData != null)
{
ptr = 0;
while (ptr < srcData.length)
{
monoData[ptr] = ((0xFF & srcData[ptr]) >= threshold) ? (byte) 255 : 0;
ptr ++;
}
}
return threshold;
}
}
figer 發表在 痞客邦 留言(0) 人氣(1,994)
又看到一個新玩意,可以讓老電腦復活的Linux 系列的"軟體"
官網
http://www.slax.org/
figer 發表在 痞客邦 留言(0) 人氣(333)
因為之前有需要說在程式執行時做即時的寫入以及讀取檔案內容
不過那個時候使用 ofstream 時發現,若程式尚未關閉就無法將資料寫到檔案內
figer 發表在 痞客邦 留言(0) 人氣(255)
一些介紹 xPUD 的網站,有機會來摸索一下這個"軟體"
http://portable.easylife.tw/1805
http://www.freegroup.org/2009/09/free-software-xpud/
http://www.techbang.com.tw/posts/959
figer 發表在 痞客邦 留言(0) 人氣(95)
【參考1】CreateThread, AfxBeginThread,_beginthread, _beginthreadex的區別 =====================================================================
1、CreateThread——Windows的API函數
2、_beginthreadex——MS對C Runtime庫的擴展SDK函數
3、AfxBeginThread——MFC中線程創建的MFC函數
CreateThread
(API函數:SDK函數的標準形式,直截了當的創建方式,任何場合都可以使用。)
提供操作系統級別的創建線程的操作,且僅限於工作者線程。不調用MFC和RTL的函數時,可以用CreateThread,其它情況不要輕易。在使用的過程中要考慮到進程的同步與互斥的關係(防止死鎖)。
線程函數定義為:DWORD WINAPI _yourThreadFun(LPVOID pParameter)。
但它沒有考慮:
(1)C Runtime中需要對多線程進行紀錄和初始化,以保證C函數庫工作正常(典型的例子是strtok函數)。
(2)MFC也需要知道新線程的創建,也需要做一些初始化工作(當然,如果沒用MFC就沒事了)。
figer 發表在 痞客邦 留言(0) 人氣(363)