在开发中,生成唯一的标识符(ID)是一个非常常见的需求。无论是为数据库中的记录分配ID、生成用户会话ID、为分布式系统生成唯一标识,还是在多线程程序中创建锁等对象的唯一标识,唯一ID的生成都是一个关键问题。在C++中,生成唯一ID的方式有很多种,每种方法都根据不同的需求有其独特的优缺点。让我们一起看看C++中几种常用的生成唯一ID的方法。 

1、使用时间戳生成唯一id

原理:利用当前系统的时间戳来生成唯一ID。常见的时间戳格式有Unix时间戳(从1970年1月1日以来的秒数)和精确到毫秒甚至微秒的时间戳。

#include<iostream>
#include<chrono>

std::string generateUniqueId(){
	
  //获取当前系统时间戳 单位为毫秒
  auto now=std::chrono::high_resolution_clock::now();
	auto duration=now.time_since_epoch();
  long long timestamp=std::chrono::duration_cast<strd::chrono::milliseconds>(duration).count();
  
 	return std::to_string(timestamp);
}
int main()
{
	std::count<<"Unique ID"<<generateUniqueId()<<std::endl;
  return 0;
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.

优缺点:

-优点:实现简单,生成的id具有递增性,时间戳本身具有高精度

-缺点:如果多次生成ID的时间点非常接近(例如,生成ID的代码运行在同一毫秒内),则可能生成重复的ID。

2、