2012-10-30 48 views
-6

我正在做一個C++員工數據庫的程序。我想爲每個員工生成一個唯一的員工編號,但我不成功,有人可以幫助我,哦,請張貼與Turbo C++ Borland相關的代碼,而不是Visual C++。希望能儘快聽到你們的消息。如果不是代碼,請告訴我一個算法來完成這項工作。獨特的Emplyee ID生成C++

+8

順序是已知的唯一... Luchian格里戈裏算法的 –

+0

實現。 'last_id ++;'如果last_id是最後一個使用的,則此代碼將創建一個新的唯一ID並將其存儲在last_id中。 – BenjiWiebe

+1

如果您使用普通的RDBMS後端來存儲員工數據,您應該使用該數據庫自己的唯一標識符生成機制,因爲這些可以由數據庫強制執行,並且應該爲您處理任何鎖定和同步問題。如果你不使用標準數據庫後端,你可能應該這樣做。 – Rook

回答

2

從1開始,每次增加。這裏有一個單線程版本:

unsigned long long int unique_id() 
{ 
    static unsigned long long int n = 0; 
    return ++n; 
} 

對於線程安全的版本,使用std::atomic<unsigned long long int>代替,或添加一個互斥。

+0

在Turbo C++中std :: atomic和mutex? – 2012-10-30 17:03:12

+0

C++ Builder,Turbo C++的現代(和維護)替換,顯然至少支持一些C++ 11規範。然而,對於Turbo C++本身並沒有多少希望。 – Rook

-1

很簡單的一個唯一的ID生成

class UniqueIDGenerator{ 
    private: 
     static unsigned long uniqueId = 1000ul; //Starting the IDs with 1000 

    public: 
     static unsigned long generateUniqueId(){ 
     return uniqueId++; 
     } 
}; 

使用方法如下

int empId = UniqueIDGenerator::generateUniqueId(); 
+0

這不是C++ ... –

+0

@KerrekSB對不起,如果我犯了任何語法錯誤。我很久沒碰過C++了。您能否指出錯誤,以便我能糾正它? – Vivek

+0

那麼,在C++中就沒有這樣的「公共類」。只是'上課'。但是擁有一個沒有非靜態成員的類也是有點過分的。爲什麼不只是一個功能? –