Вы на правильном пути. std::sort
будет использовать operator<
в качестве функции сравнения по умолчанию. Поэтому для сортировки ваших объектов вам придется либо перегрузить bool operator<( const T&, const T& )
, либо предоставить функтор, который выполняет сравнение, например:
struct C {
int i;
static bool before( const C& c1, const C& c2 ) { return c1.i < c2.i; }
};
bool operator<( const C& c1, const C& c2 ) { return c1.i > c2.i; }
std::vector<C> values;
std::sort( values.begin(), values.end() ); // uses operator<
std::sort( values.begin(), values.end(), C::before );
. Преимущество использования функтора заключается в том, что вы можете использовать функцию с доступом к частным членам класса.
Я не делал этого в IDEA CE, но теоретически это должно сработать.
Предварительные условия: у вас установлен узел, вы можете выполнять задачи gradle
Это минимальная конфигурация, она всеобъемлющая. Добавьте комментарий, если вам это интересно
Шаг 1:
Создайте новый проект Kotlin / JS (с Gradle) и убедитесь, что ваш файл сборки Gradle выглядит следующим образом
group 'node-example'
version '1.0-SNAPSHOT'
buildscript {
ext.kotlin_version = '1.3.11'
repositories {
mavenCentral()
}
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
apply plugin: 'kotlin2js'
repositories {
mavenCentral()
}
dependencies {
compile "org.jetbrains.kotlin:kotlin-stdlib-js:$kotlin_version"
}
compileKotlin2Js.kotlinOptions {
moduleKind = "commonjs"
outputFile = "node/index.js"
}
task npmInit(type: Exec) {
commandLine "npm", "init", "-y"
}
task npmInstall(type: Exec) {
commandLine "npm", "install", "kotlin", "express", "--save"
}
task npmRun(type: Exec) {
commandLine "node", "node/index.js"
}
npmRun.dependsOn(build)
Шаг 2:
После синхронизации build.gradle
в шаге 1 запустите задачи gradle npmInit
и npmInstall
./gradlew :npmInit
./graldew :npmInstall
Шаг 3:
Создайте свой файл kotlin (index.kt
/ main.kt
/ whatever.kt
) в src/main/kotlin
и протестируйте приведенный ниже код
external fun require(module:String):dynamic
fun main(args: Array<String>) {
println("Hello JavaScript!")
val express = require("express")
val app = express()
app.get("/", { req, res ->
res.type("text/plain")
res.send("Kotlin/JS is kool")
})
app.listen(3000, {
println("Listening on port 3000")
})
}
Шаг 4: RT F i> A - Запустить приложение
Запустить задачу Gradle npmRun [ 1130] ./gradlew :npmRun
Надеюсь, что это поможет
Примечание:
1. Этот шаблон был взят из среднего поста, который вы спрашивали выше, и немного изменил
2. Не забудьте запускать свои задачи gradle, используя sudo
(если вы используете linux)