Я не могу много с Genie, но в Vala это будет:
private static int main (string[] args) {
string[] datas = new string[] {
"cold", "z", "bpples", "pallalala", "apples", "xccv"
};
GLib.qsort_with_data<string> (datas, sizeof(string), (a, b) => GLib.strcmp (a, b));
return 0;
}
В принципе, ключ GLib.qsort_with_data
. Вы также можете использовать Posix.qsort
, как упомянуто apmasell, но это немного сложнее.
Как упомянутый apmasell и txasatonga, вы можете использовать тип данных из libgee, но если вы уже не используете libgee, вы можете вместо этого перейти с чем-то из glib. В этом случае GLib.GenericArray
будет хорошо подходит. В Vala, это будет выглядеть следующим образом:
private static int main (string[] args) {
GLib.GenericArray<string> datas = new GLib.GenericArray<string>();
datas.add ("cold");
datas.add ("z");
datas.add ("pallalala");
datas.add ("apples");
datas.add ("xccv");
datas.sort (GLib.strcmp);
return 0;
}
Одна очень хорошая вещь о GLib.GenericArray
является то, что он использует массив C в качестве своего основного хранения. Если вы используете регулярные массивы в других местах вашего кода, вы можете получить доступ к базовому массиву с помощью поля GLib.GenericArray.data
и, возможно, избежать копирования всего массива. И, конечно же, это также не заставляет зависимость от libgee.
И, наконец, ваш выбор имени переменной ... 'data' является множественным, единственное значение 'data' - это 'datum'. Я только привести его так, у меня есть предлог, чтобы отправить this:
![XKCD 1429](https://i.stack.imgur.com/FOPAK.png)
yes.it не очень ясно –