1.QT Connect 函數的第五個參數:html
1)自動鏈接(AutoConnection),默認的鏈接方式,若是信號與槽,也就是發送者與接受者在同一線程,等同於直接鏈接;若是發送者與接受者處在不一樣線程,等同於隊列鏈接。
2)直接鏈接(DirectConnection),當信號發射時,槽函數當即直接調用。不管槽函數所屬對象在哪一個線程,槽函數總在發送者所在線程執行,即槽函數和信號發送者在同一線程
3)隊列鏈接(QueuedConnection),當控制權回到接受者所在線程的事件循環時,槽函數被調用。槽函數在接受者所在線程執行,即槽函數與信號接受者在同一線程
4)鎖定隊列鏈接(QueuedConnection)
Qt::BlockingQueuedConnection:槽函數的調用時機與Qt::QueuedConnection一致,不過發送完信號後發送者所在線程會阻塞,直到槽函數運行完。接收者和發送者絕對不能在一個線程,不然程序會死鎖。在多線程間須要同步的場合可能須要這個。
5)單一鏈接(UniqueConnection)c++
2.快速排序多線程
int partition(int a[],int low,int high)函數
{oop
int iFlag = a[low];測試
while(low<high)ui
{this
while((low<high)&&(a[high]>=iFlag))線程
high—;設計
if(low<high)
{
int tmp = a[low];
a[low] = a[high];
a[high] = tmp;
}
while((low<high)&&(a[low]<=iFlag))
low++;
if(low<high)
{
int tmp = a[low];
a[low] = a[high];
a[high] = tmp;
}
}
return low;
}
void quickSort(int a[],int low,int high)
{
if(low<high)
{
int iMid = partition(a,low,high);
quickSort(a,low,iMid-1);
quickSort(a,iMid+1,high);
}
}
3.鏈表逆序
struct Node
{
int iData;
Node* pNext;
}
Node* reverseList(Node* pHead)
{
if((NULL==pHead)||(NULL==pHead->pNext))
return pHead;
Node* pNewHead = reverse(pHead->pNext);
pHead->pNext->pNext = pHead;
pHead->pNext = NULL;
return pNewHead;
}
4.鏈表是否有環
bool IsLoop(Node* pHead)
{
Node* pSlow = pHead;
Node* pFast = pHead;
while(pFast&& pFast->pNext)
{
pSlow = pSlow->pNext;
pFast = pFast->pNext->pNext;
if(pSlow==pFast)
return true;
}
return false;
}
5.內存拷貝
void* mymemcpy(void* dest, void* source, size_t count)
{
void* ret = dest;
if (dest <= source || dest >= (source + count))
{
while (count --)
*dest++ = *source++;
}
else
{
dest += count - 1;
source += count - 1;
while (count--)
*dest-- = *source--;
}
return ret;
}
6.字符串拷貝
char * strcpy( char *strDest, const char *strSrc )
{
assert( (strDest != NULL) &&(strSrc != NULL) );
char *address = strDest;
while( (*strDest++ = * strSrc++) != ‘\0’ );
return address;
}
七、static的做用
(1)在函數體內,靜態變量具備「記憶」功能,一個被聲明爲靜態的變量在這一函數被調用的過程當中,其值維持不變;
(2)函數體外,模塊內,它的做用範圍是有限制的:
靜態變量:該變量能夠被模塊內全部函數訪問,但不能被模塊外其餘函數訪問,是一個本地的全局變量;
靜態函數:做用域與普通函數不一樣,它的做用域僅限於本文件中,只能被這一模塊的其餘函數調用,不能被模塊外的其餘函數調用。
static全局變量與普通的全局變量的區別:static全局變量只初始化一次,目的是防止在其餘文件中被引用。
static局部變量與普通的局部變量的區別:static只被初始化一次,下一次運算是上一次的結果。
static()函數與普通函數的區別:做用域不一樣,static()函數只在一個源文件重要有效,不能被其餘源文件使用
類中的靜態數據成員的特色:
(1)不管類的對象定義多少個,靜態數據成員在類中只有一份複製品;
(2)靜態數據成員存儲在全局數據區,定義時,需分配空間;
(3)靜態成員變量初始化是在類外;
靜態成員函數不具備this指針,沒法訪問屬於類對象的非靜態數據成員,也沒法訪問非靜態成員函數,只能調用其他的靜態數據成員函數。
八、const的做用
定義const常量,具備不可變性;
進行類型檢查
方便進行參數調整和修改
保護被修飾的東西,防止被意外更改
爲函數重載提供參考
節省空間,避免沒必要要的內存分配
9.指針與引用的區別?
(1)非空區別。在任何狀況下都不能使用指向空值的引用。所以若是你使用一個變量並讓它指向一個對象,可是該變量在某些時候也可能不指向任何對象,這時你應該把變量聲明爲指針,由於這樣你能夠賦空值給該變量。相反,若是變量確定指向一個對象,例如你的設計不容許變量爲空,這時你就能夠把變量聲明爲引用。不存在指向空值的引用這個事實意味着使用引用的代碼效率比使用指針要高。
(2)合法性區別。在使用引用以前不須要測試它的合法性。相反,指針則應該老是被測試,防止其爲空。
(3)可修改區別。指針與引用的另外一個重要的區別是指針能夠被從新賦值以指向另外一個不一樣對象。可是引用則老是指向在初始化時被指定的對象,之後不能改變,可是指定的對象其內容能夠改變。
https://www.cnblogs.com/zyb428/p/5673738.html