Уже год назад я собрался написать финансовый индекс и постоянно выходят посты по философии, либо я выкладываю отдельные куски алгоритмов, а все никак не могу взяться за масштабный проект. Почему? Дело в том, что мои первые учебные материалы были не очень удачны и один очень важный момент я понял неправильно, в результате это стало проблемой для восприятия дальнейшего материала. Ответ я нашел в книге
Programming Principles and Practice Using С++
Second edition
Bjarne Stroustruр
Я копировал совет из книги, и стал его применять.
С моей стороны было бы свинством, не поделиться этим после года писанины.
Надеюсь это будет полезным)
Не в плане обидеть, просто год из за вот этой вот хрени? Вы че шутите чтоли? Может неверное целеполагание вообще убьет Вас?
www.labirint.ru/books/76003/
учил С/С++ когда у меня даже компьютера не было. Там на простых коротких примерах есть все что касается объектов (наследование, полиморфизм, виртуальные функции). Только книжка у меня более старого издания была. Ну и Borland C++ я никогда в жизни себе не ставил, это я к тому, что хоть про борланд написано на самой обложке, по сути это вообще ничего не меняет.
дело было так, лазал я на Microsoft Press Store и купил вот такую
книгу ...
а там что бы программировать нужен C++ говорили, я ее так особо даже еще и не прочитал, так как еще не доучил C++
Наверное персональные приложения пилить и графику, не знаю… сказали надо ))
P.S. Все равно не понимаю, на что впустую был потрачен год, как связано системное программирование в Windows и торговля на бирже, и что значит «собрался написать финансовый индекс»?
Кстати в этой книге будет и С еще ...
STL что то знакомое, вроде бы STL будет в более сложной книге Cтрауструпа
На простецком уровне уже сейчас тобой stl может использоваться так:
вместо
int arrSize = 5;
double* pArr = new double[ arrSize ];
for( int i = 0; i < arrSize; i++ )
cin >> pArr[i];
//do something
delete pArr
ты можешь делать так:
#include <vector>
std::vector<double> dVec(5);
// or std::vector<double> dVec; dVec.resize(5)
for( int i = 0; i < dVec.size(); i++ )
cin >> dVec[i];
//do something
а удалять специально объект dVec не нужно, это сделает деструктор, встроенный в него.
А что если ты не знаешь заранее длину своего вектора? Пожалуйста:
std::vector<double> dVec;
while( true )
{
double t;
if( !( std::cin >> t ) )
break;
dVec.push_back( t );
}
длина вектора будет увеличиваться до тех пор, с консоли будет введено не число…
cin >> object
vector.push_back(object)
у нее три составляющие: контейнеры (vector), итераторы (указатели на элементы контейнеров по сути) и алгоритмы. push_back — этот метод (один из, как и .size() ) контейнера (с точки зрения С++ — шаблона класса) vector. Алгоритмы — это отдельная тема. Например, можно легко отсортировать вектор, просто написав:
#include <algorithm>
std::sort( dVec.begin(), dVec.end() );
тут уже придется книжку почитать, чтобы уяснить что возвращают методы begin и end (что такое итераторы)…
Не знаю как насчет Страуструпа, но вот у Саттера очень полезные книжки по STL, там изнутри объясняется как устроена STL, чтобы можно было самому ее заново воспроизвести!
Ну а тут чисто посмотреть что за тема вообще:
www.solarix.ru/for_developers/cpp/stl/stl.shtml
Просто автор говорит, что иногда полезно заставить собрать студента колесо.