小编MCC*_*CCS的帖子

从Travis下载构建

有没有办法下载最新编译的travis二进制文件?我想尝试未发布的版本,但我不能自己编译.

是否有下载编译软件的按钮?

travis-ci

8
推荐指数
1
解决办法
6456
查看次数

通过std :: sort对C 2D数组进行排序

我有一个2D数组a[][40].我正试图通过调用来对它进行排序std::sort,并且我已经编写了该Compare函数.但是,C++希望我有一个std::vector要排序,而不是一个简单的数组,我希望排序的数组a本身,我不想创建另一个数组并保存排序结果.似乎有很多方法可以实现这一目标.我可以想到五种方式,但它们似乎都没有效率和工作.

1)

直接使用 std::sort(std::begin(a), std::begin(a) + something, cmp);

它不起作用,因为std::begin不知道如何指向2D数组的开头.此外,即使编译它也会错误排序,因为2D数组不是对数组的引用数组,而是连续数组(与Java不同)

游乐场:https://godbolt.org/g/1tu3TF

2)

std::vector<unsigned char[40]> k(a, a + x);
std::sort(k.begin(), k.end(), cmp);
Run Code Online (Sandbox Code Playgroud)

然后将所有内容复制回来 a

它不起作用,因为它是一个2D数组,并且无法使用这种方式进行排序std::sort.与第一次试验相比,这一次使用的内存是内存的两倍,并将所有内容复制两次(如果有效)!

游乐场:https://godbolt.org/g/TgCT6Z

3)

std::vector<int> k(x);
for (int i = 0; i < x; k[i] = i, i++);
std::sort(k.begin(), k.end(), cmp2);
Run Code Online (Sandbox Code Playgroud)

然后改变顺序a是相同的k;

这个想法很简单,创建一个代表性"指针"的向量,对它们进行排序(当cmp2函数秘密访问a并比较值时),然后使a它们具有相同的顺序k.

最后,重新排序循环将非常复杂,需要一个大的临时变量.此外,为了cmp2 …

c++ arrays sorting multidimensional-array

5
推荐指数
1
解决办法
159
查看次数

标签 统计

arrays ×1

c++ ×1

multidimensional-array ×1

sorting ×1

travis-ci ×1