На минуточку. Qt 5 это библиотеки, они нужны для работы приложений и совсем не должны ничего делать при установке на чистую систему.
А если вы говорите Qt 5, а подразумевает QtSDK, то прочтите комментарии ниже или скачайте пакет с инструментами для разработки и самостоятельно убедитесь, что всё работает из коробки(для полного счастья может не хватать Visual Studio в Windows, но это не считается, я думаю).
5.0.1 ещё не скачивал, не знаю что там, но для предыдущей версии как раз полный SDK(библиотеки и QtCreator) они и выкладывали, только меньшего размера(без Symbian уже).
Qt 5.0 распространяется как полный SDK пакет с бинарными сборками для Linux (64 и 32 bit), Mac OS X (10.7 и 10.8) и Windows.
И также включает в себя IDE Qt Creator 2.6, примеры и полную документацию.
Никто не говорил, что значение N изменить нельзя или что сделать это сложно, да и примеров хватает, но это не безопасно. Очень просто запутать себя, товарища, компилятор, пользователя, данные, если перезаписывать N новым значением прямо в цикле.
Конечно это UB. Разумеется так писать нельзя. Оба примера не являются легальными вариантами. Не существует легального варианта. Нельзя писать код, поведение которого мы не можем предсказать.
Но мы живём не в идеальном мире и на практике…
#include <iostream>
int main()
{
int lsize = 2;
int array[2];
int k = -1;
std::cout<<array+k<<" "<<&lsize<<" "<<lsize<<std::endl;
array[k] = 100500;
std::cout<<array+k<<" "<<&lsize<<" "<<lsize<<std::endl;
return 0;
}
Вывод на codepad.
Для разных компиляторов значение k может быть разным, но главное мы можем, обратившись к ячейке массива по индексу, перезаписать область памяти, которая формально этому массиву не принадлежит, и ничего нам за это не будет.
SWIG упрощает задачу, но как бы список requirements для сборки у нас не стал больше кода самого приложения. Нужно оценивать масштаб при выборе инструментов.
Преимущество нативного кода это не только время его исполнения, но и доступ к ресурсам, которые для Java не доступны. Во втором случае с оверхедом придётся смириться.
Смотрел, выглядит интереснее и проще. Определимся, когда будем видеть сколько вызовов C++ функций у нас будет. Две или три скорее всего нигде погоды не сделают.
А если вы говорите Qt 5, а подразумевает QtSDK, то прочтите комментарии ниже или скачайте пакет с инструментами для разработки и самостоятельно убедитесь, что всё работает из коробки(для полного счастья может не хватать Visual Studio в Windows, но это не считается, я думаю).
На qt-project.org/downloads прямые ссылки на только на SDK и есть, а вот за всем отдельно просят идти на releases.qt-project.org/qt5/5.0.0/
Но мы живём не в идеальном мире и на практике…
Вывод на codepad.
Для разных компиляторов значение k может быть разным, но главное мы можем, обратившись к ячейке массива по индексу, перезаписать область памяти, которая формально этому массиву не принадлежит, и ничего нам за это не будет.