是否可以按"列"对列表的数量进行排序?在Redis中是这样的:
vector<Point2f> imagePoints;
for (int i = 0; i < 4; i++)
imagePoints.push_back(point[i]); // 2d image coordinates
//Mat objPts(4, 1, CV_64F, pt);
//Mat imgPts(4, 1, CV_64F, point);
// camera parameters
double Intrinsic[] = { fx, 0, cx, 0, fy, cy, 0, 0, 1 };
Mat Camera_Matrix(3, 3, CV_64FC1, Intrinsic);
double Distort[] = { k1, k2, p1, p2 };
Mat DistortCoeffs(4, 1, CV_64FC1, Distort);
// estimate camera pose
Mat rvec, tvec; // rotation & translation vectors
solvePnP(objectPoints, imagePoints, Camera_Matrix, DistortCoeffs, rvec, tvec);
答案 0 :(得分:3)
是的,但您必须为其准备数据。一种方法是使用一个排序集,您可以在其中保留列表&#39;键名作为成员,分数作为第一个成员(&#34;列&#34;)。请注意,每当您对相关列表进行更改时,您都必须更新此已排序集。
在您的示例中,应使用以下内容创建排序集:
ZRANGEBYSCORE lists_index -inf +inf
要获取已排序的列表列表,请执行local t = {}
for _, k in pairs(KEYS) do
local s = redis.call('LINDEX', k, ARGV[1])
t[#t+1] = { s, k }
end
table.sort(t, function (a, b)
return (a[1] < b[1])
end)
local r = {}
for i, v in pairs(t) do
r[#r+1] = v[2]
end
return r
。
更新:,Lua将是解决这个问题的一种方式,如下:
$ redis-cli --eval sort_by_column.lua mylist mylist2 mylist3 , 0
1) "mylist2"
2) "mylist"
3) "mylist3"
以这种方式运行:
func animateMovement() {
var newBottom = NSLayoutConstraint(
item: self.logo,
attribute: NSLayoutAttribute.Bottom,
relatedBy: NSLayoutRelation.Equal,
toItem: self.usernameField,
attribute: NSLayoutAttribute.Bottom,
multiplier: 1,
constant: 15)
self.view.layoutIfNeeded()
self.oldBottom = newBottom
UIView.animateWithDuration(1.0, animations: {
self.view.layoutIfNeeded()
}, completion: {})
但请注意,每次调用此排序操作时,使用此方法都需要更多资源(而不是连续维护的排序集)。