我想nums在不破壞原始順序的情況下對命名的切片進行排序。所以我inds用來記錄索引nums和排序inds:vector<int> nums = {1,3,2,1,1,1};vector<int> inds = {0,1,2,3,4,5};sort(inds.begin(), inds.end(), [nums](int i, int j) -> bool{ return nums[i] > nums[j]; });for(int i : inds) { cout << i;}這inds是120345排序后的。在 Go 中,我測試:nums := []int{1,3,2,1,1,1}inds := []int{0,1,2,3,4,5}sort.Slice(inds, func(i, j int) bool { return nums[i] > nums[j]})fmt.Println(inds)而 The indsis [1 0 2 3 4 5]after sort,這和C++的結(jié)果不一樣,和我預(yù)想的不一樣。為什么 Go 排序inds不好?
1 回答

波斯汪
TA貢獻1811條經(jīng)驗 獲得超4個贊
匿名函數(shù)參數(shù)i和j是 中的索引inds,但程序使用參數(shù)作為 中的索引nums。
inds通過使用將索引值轉(zhuǎn)換為來修復(fù)nums:
sort.Slice(inds, func(i, j int) bool {
return nums[inds[i]] > nums[inds[j]]
})
- 1 回答
- 0 關(guān)注
- 99 瀏覽
添加回答
舉報
0/150
提交
取消