我有两个二进制数据缓冲区,代表SSID。 SSID不是字符串,可以做中间有空字符的事情。我想按字典顺序对SSID列表进行排序:
\0\0\0\0
AccessPointA
AccessPointB
AccessPointB\0
ZZZZ
我已经有了一个框架,只需要一个<0, 0, >0
结果进行比较(所以如果它是一个字符串,它可以使用strcmp
)。
但是,由于两个SSID的长度不一定相同,我无法直接使用memcpy
,而且我真的不想分配缓冲区并使用空值填充两个什么的。
是否有一种有效的方法来按字典顺序比较两个任意长度的缓冲区?
答案 0 :(得分:2)
std::sort(std::begin(Container), std::end(Container), [](SSID const& Lhs, SSID const& Rhs){ return std::lexicographical_compare(std::begin(Lhs), std::end(Lhs), std::begin(Rhs), std::end(Rhs)); });