在 Java 中还有其他替代方法可以实现相同的目标吗?在 C++ 中,我可以使用这些美妙的方法,让我的生活更轻松。在 Java 中也有可能吗?我唯一的目标是编写简单干净且不易出错的代码。
我很好奇std:next_permutation是如何实现的所以我提取了gnu libstdc ++ 4.7版本并清理了标识符和格式以生成以下演示...
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
template<typename It>
bool next_permutation(It begin, It end)
{
if (begin == end)
return false;
It i = begin;
++i;
if (i == end)
return false;
i = end;
--i;
while (true)
{
It j = i;
--i;
if (*i < *j)
{
It k = end;
while (!(*i < *--k))
/* pass */;
iter_swap(i, k);
reverse(j, end);
return true;
}
if (i == begin)
{
reverse(begin, end); …Run Code Online (Sandbox Code Playgroud) 127.0.0.1:7501> eval“返回{1,2,9223372036854775807}”0
1) (整数) 1
2) (整数) 2
3) (整数) -9223372036854775808
请帮助这种奇怪的行为。我知道 lua 只能通过损失一些精度来表示超过 10^15 的大数。我预计返回值为“9.2233720368548e+18”,但不是负数。
另请参考 127.0.0.1:7501> eval "return {1,2,tostring(9223372036854775807)}" 0
1) (整数) 1
2) (整数) 2
3) "9.2233720368548e+18"
127.0.0.1:7501> eval "return {1,2,tonumber(9223372036854775807)}" 0
1) (整数) 1
2) (整数) 2
3) (整数) -9223372036854775808
c++ ×2
java ×1
jedis ×1
lettuce ×1
lower-bound ×1
lua ×1
performance ×1
permutation ×1
redis ×1
upperbound ×1