Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Общие вопросы разработки программ _ Возможность импорта библиотек.

Автор: Krjuger 10.11.2011 2:41

В написании программы я воспользовался благами Boost'a, а точнее его vector ,но в институте меня образовали,сказав, что программу придется компилировать, и конешно же там boost'a нету.Желания переписывать практически полностью нету,если ли какие нибудь средства или возможности выбрать необходимый мне контент? Чтобы принеся проект я его смог там скомпилировать?

Автор: IUnknown 10.11.2011 4:18

Цитата
Желания переписывать практически полностью нету
, но придется, если хочешь сдать программу... boost должен быть установлен для того, чтобы иметь возможность его использовать в проекте.

Автор: Krjuger 10.11.2011 20:26

Тогда возникают вопросы,как лучше реализовывать возможности прибавления числа к вектору ,сколярное произведение векторов, копирование векторов.
Например, у меня есть


typedef double (*Function)(vector<double>) ;

double FindMin(Function F, vector <double> s, vector<double> p)
{
const double EPS = 1e-8;
double a = 0;
double b = 1e5;
double x0 = a + 0.5 * (3 - sqrt(5.0)) * (b - a);
double x1 = b - x0 + a;

while (abs(b - a) > EPS)
{
if (F(s + x0 * p) < F(s + x1 * p) ) b = x1;
else a = x0;

x1 = x0;
x0 = b + a - x1;
}
return (a + b)/2;
}


Воззикает вопрос, как поступать с if (F(s + x0 * p) < F(s + x1 * p) ),влоб сначала сложить 2 вектора,а потом подставить результирующий вектор?Или можно как-нибудь по другому.

Автор: IUnknown 11.11.2011 0:03

Стесняюсь спросить, а при чем тут boost? Это ж STL. Что, его тоже нет там, где будут компилироваться программы? Тогда я бы делал на чистом С, вообще без плюсов. Обычно там, где "нет STL" подразумевается такое старьё, что мама не горюй. Типа Досовского Turbo C++ 1992 года выпуска...

Что за компилятор - неизвестно? Любой мало-мальски современный уже поддерживает STL.

Автор: Krjuger 11.11.2011 0:45

Может борландовский компилятор и поддерживает,но если использовать VS #include <vector> то в строке if (F(s + x0 * p) < F(s + x1 * p) ) мне пишет Error С2677: binary '*' : no global operator found which takes type 'std::vector<_Ty>' (or there is no acceptable conversion) Ну и собственно это все основные ошибки.

Boost при том,что в нем подключил и работаешь,а сейчас я так понимаю придется писать копирование, умножение вектора на число и тд.По крайней мере в описании Vector я их не нашел.Я прикрасно понимаю? что несложно описать функции,которые в лоб будут делать сложение,умножение, просто интересовало, есть ли какие нибудь более продвинутые методы в рамках STL.