C++에서 Employee Database 프로그램을 수행하고 있습니다. 각 직원마다 고유 한 직원 번호를 생성하고 싶지만 성공하지 못했습니다. 누군가 나를 도와 드릴 수 있습니다. 오, Visual C++가 아닌 Turbo C++ Borland 관련 코드를 게시하십시오. 곧 너희들의 소식을 듣기를 바란다. 코드가 아니라면이 작업을 수행하는 알고리즘을 알려주십시오.고유 Emplyee ID 생성 C++
답변
1에서 시작하여 매번 증가하십시오. 여기에 단일 스레드 버전입니다 :
unsigned long long int unique_id()
{
static unsigned long long int n = 0;
return ++n;
}
스레드 안전 버전의 경우는, 대신 std::atomic<unsigned long long int>
를 사용하거나 뮤텍스를 추가 할 수 있습니다.
std :: 터보 C++의 원자 및 뮤텍스? –
C++ 빌더, 터보 C++의 현대적인 (유지 보수 된) 대체품으로 C++ 11 스펙 중 적어도 일부는 분명히 지원됩니다. 그러나 Turbo C++ 자체에 대한 희망은별로 없습니다. – Rook
아주 간단한 고유 한 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();
이것은 C++이 아닙니다 ... –
@KerrekSB 구문 오류가 발생하면 죄송합니다. 나는 오랫동안 C++에 손대지 않았다. 오류를 지적하여 문제를 해결할 수 있습니까? – Vivek
C++에는 "공용 클래스"같은 것이 없습니다. 그냥'클래스'. 그러나 비 정적 멤버가없는 클래스도 맨 위에 약간 있습니다. 왜 함수가 아닌가? –
순차처럼 사용이 ... 독특한 것으로 알려져 Luchian 고르의 알고리즘의 –
구현된다. 'last_id ++;'last_id가 마지막으로 사용 된 것이면이 코드는 새로운 고유 ID를 생성하고 last_id에 저장합니다. – BenjiWiebe
일반적인 RDBMS 백엔드를 사용하여 직원 데이터를 저장하는 경우 해당 데이터베이스 고유의 식별자 생성 메커니즘을 사용해야합니다. 이러한 메커니즘은 데이터베이스에 의해 강제 적용될 수 있으며 잠금 및 동기화 문제를 처리해야합니다. 표준 데이터베이스 백엔드를 사용하지 않는다면 아마해야 할 것입니다. – Rook