Этого треда уже нет.
Это копия, сохраненная 17 июля 2015 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
1311 Кб, 2702x1886
C++ тред sage #489539 В конец треда | Веб
Вопросу по синтаксису идут на хуй.
Лабы идут на хуй.
"Как мне сделать Х на чистых крестах без библиотек" идут на хуй.
Все идут на хуй.
Хейтер сосет члены на пару со своей мамашей.

Тег [code] работает через жабаскрипт-костыль: https://github.com/ololoepepe/MakabaCode

Предыдущий: >>478556
sage #2 #489585
>>489539
Какой ты дерзкий, нахуй пойди
6 Кб, 150x150
#3 #489633
>>489585
Ты ведь прочитал, что делает хейтер?
sage #4 #489654
>>489633
Как он прочитает, ему небритая мошонка обзор загораживает.
sage #5 #489716
Есть такая порода людей, которая считает, что каждый, кто на что-то претендует, просто обязан хлебнуть говна. Например, "настоящий мужчина" обязан сходить в армию или отсидеть в тюрьме, ведь что тюрьма, что армия - школа жизни; "настоящий программист" обязан писать на крестах, ПХП или тому подобном, ведь сами они на нём писали, а кто не хапнул этого говна, тот и не программист вовсе. С одной стороны понять их можно - механизм примерно такой же как у дедовщины в уже упомянутой армии или прописки на малолетке ("меня опускали, теперь я буду опускать" - ну просто обучение и сделование паттерну, через пиздюли навязанному авторитетом, детская психика так устроена), с другой - сами они со временем так нихуя и не понимают, и любые попытки объяснить им, что все эти боль и унижения, через которые они прошли, в общем-то лишние, встречают у них агрессию и отрицание.
sage #6 #489779
>>489716
Выводы у тебя правильные, а вот исходные данные - нет.
#7 #489800
>>489716
Сферический программист в вакууме может сидеть под ДОС и писать программы на прологе.
#8 #489816
>>489800
пролог — это абсолютный сферический кавай в вакууме
#9 #489883
Анон, а можно как-нибудь перегрузить шаблон функции только для стандартных типов? К примеру, есть функция
template <class T>
T sum(T a,T b);
я хочу, чтобы она была перегружена только для стандартных типов (int, float,...), а для классов определенных пользователем требовалась принудительная типизация?
#10 #489899
>>489883
Ставить по дефолту какой-нибудь static_assert. А всё остальное определить частичной специализацией.
Попробуй глянуть Александруску, наверняка найдёшь нужную инфу.
#11 #489907
>>489883
>>489899

Хуйню спизданул. В данном случае не нужно ничего усложнять. Сгодится и следующий вариант:

template<class T>
T sum(const T &lhs, const &T rhs)
{ return lhs + rhs; }
#12 #489941
>>489907
Это не то, тут шаблон распространяется на все классы. Я хочу, чтоб работало:
int a,b;
sum(a,b);
а в этом случае компилятор выдавал ошибку:
myclass c,d;
sum(c,d);
#13 #489943
>>489899
что за александруска? не гуглится
#14 #489947
>>489943
Александреску (румын)
sage sage sage #15 #489948
sage
#16 #489957
>>489943
Вот эта книжка:
http://www.ozon.ru/context/detail/id/3829080/

>>489941
Первое, что приходит на ум, простыня следующих конструкций:
static_assert(std::is_same<T, int>::value)
static_assert(std::is_same<T, float>::value)
... etc
http://ideone.com/9JG8Pi

Теперь вот тоже интересно, можно ли эту простыню реализовать более элегантно.
#18 #490020
>>490015
Да, еще надо делать std::remove_reference
sage #19 #490052
Уже который раз я пытаюсь написать что-то используя Qt и уже в который раз он доказывает мне свою бесполезность. На этот раз САМЫЙ ОБЫЧНЫЙ QSystemTrayIcon какого-то хуя не выдает сигнал activated. Точнее он его выдает уже после того, как я вызываю QApplication::exit(0).
Код предельно прост.
[code lang="cpp"]
MainWindow::MainWindow(QApplication app) : QMainWindow(), mApplication(app)
{
systemTrayMenu = new QMenu();
QAction
quitAction = systemTrayMenu->addAction(tr("Quit"));
connect(quitAction, SIGNAL(triggered(bool)), this, SLOT(onQuit(bool)));

sysTrayIcon = new QSystemTrayIcon(QIcon(":icons/icon.png"));
sysTrayIcon->setContextMenu(systemTrayMenu);
sysTrayIcon->show();
connect(sysTrayIcon, SIGNAL(activated(QSystemTrayIcon::ActivationReason)), this, SLOT(onSysTrayActivation(QSystemTrayIcon::ActivationReason)));
}

void MainWindow::onSysTrayActivation(QSystemTrayIcon::ActivationReason reason)
{
std::cout << reason << "\n";
}

void MainWindow::onQuit(bool)
{
mApplication->exit(0);
}
[/code]
sage #21 #490060
>>490052
И даже еще тривиальнее
[code lang="cpp"]
MainWindow::MainWindow(QWidget parent) : QMainWindow(parent)
{
systemTrayMenu = new QMenu();
QAction
quitAction = systemTrayMenu->addAction(tr("Quit"));
connect(quitAction, SIGNAL(triggered(bool)), this, SLOT(close()));

sysTrayIcon = new QSystemTrayIcon(QIcon(":icons/icon.png"));
sysTrayIcon->setContextMenu(systemTrayMenu);
sysTrayIcon->show();
connect(sysTrayIcon, SIGNAL(activated(QSystemTrayIcon::ActivationReason)), this, SLOT(onSysTrayActivation(QSystemTrayIcon::ActivationReason)));
}

void MainWindow::onSysTrayActivation(QSystemTrayIcon::ActivationReason reason)
{
std::cout << reason << "\n";
}
[/code] Все равно вывод в консоль ВСЕХ произошедших эвентов activated происходит ПОСЛЕ закрытия окна.
#22 #490062
Анон, вот смари какая штука. Мне надо сделать джва класса объектных пулов, в одном хранятся объекты, у которых конструктор принимает джва значения, а в другом - те же два, и плюс еще одно новое. Соответственно, конструкторы самих пулов тоже должны принимать эти значения, сохранять у себя и потом пихать во все создаваемые объекты. Примерно так все это выглядит:

[code lang="cpp"]
class FirstClass
{
public:
\tFirstClass (SomeClass & a, AnotherClass & b);
};

class SecondClass
{
public:
\tSecondClass (SomeClass & a, AnotherClass & b, YobaClass & c);
};

class FirstPool
{
\tstd::list <FirstClass > Objects;
\tSomeClass aa;
\tAnotherClass bb;
\t
public:
\tFirstPool (SomeClass & a, AnotherClass & b) :
\t\taa (a), bb (b)
\t{}
};

class SecondPool
{
\tstd::list <SecondClass
> Objects;
\tSomeClass aa;
\tAnotherClass bb;
\tYobaClass cc;
\t
public:
\tSecondPool (SomeClass & a, AnotherClass & b, YobaClass & c) :
\t\taa (a), bb (b), cc (c)
\t{}
};
[/code]

Я хочу сделать красиво, шоб DRY соблюдалось, и сделать для них общий шаблон. Но тут возникают проблемы:

1. Хранить cc в инстанцированном шаблоне-аналоге FirstPool это дикость, ибо жертвуется производительность в рантайме в угоду удобству компиляции. Как сделать, чтобы член cc инстанцировался только вручную для одного из параметров шаблона? И можно ли это вообще сделать? Пробовал писать что-то в духе YobaClass TemplatePool <SecondClass>::cc при объявлении члена, тогда конструктор считает YobaClass TemplatePool <SecondClass>:: именем класса и не хочет их присваивать.

2. На самом деле, помимо параметра шаблона, который определяет, будет внутри FirstClass или SecondClass, есть еще параметр, совпадающий с AnotherClass, он просто передается во все конструкторы. Если я вручную инстанцирую конструктор шаблона по обоим параметрам, то все заебись. Но мне-то нужно указать различные реализации только для первого параметра, а AnotherClass трогать не нужно, он может быть каким угодно. А когда я пытаюсь инстанцировать конструктор новым шаблоном уже с одним параметром, при сборке пишет, что шаблон конструктора уже определен. Как совладать с этим дерьмом, анон?
#22 #490062
Анон, вот смари какая штука. Мне надо сделать джва класса объектных пулов, в одном хранятся объекты, у которых конструктор принимает джва значения, а в другом - те же два, и плюс еще одно новое. Соответственно, конструкторы самих пулов тоже должны принимать эти значения, сохранять у себя и потом пихать во все создаваемые объекты. Примерно так все это выглядит:

[code lang="cpp"]
class FirstClass
{
public:
\tFirstClass (SomeClass & a, AnotherClass & b);
};

class SecondClass
{
public:
\tSecondClass (SomeClass & a, AnotherClass & b, YobaClass & c);
};

class FirstPool
{
\tstd::list <FirstClass > Objects;
\tSomeClass aa;
\tAnotherClass bb;
\t
public:
\tFirstPool (SomeClass & a, AnotherClass & b) :
\t\taa (a), bb (b)
\t{}
};

class SecondPool
{
\tstd::list <SecondClass
> Objects;
\tSomeClass aa;
\tAnotherClass bb;
\tYobaClass cc;
\t
public:
\tSecondPool (SomeClass & a, AnotherClass & b, YobaClass & c) :
\t\taa (a), bb (b), cc (c)
\t{}
};
[/code]

Я хочу сделать красиво, шоб DRY соблюдалось, и сделать для них общий шаблон. Но тут возникают проблемы:

1. Хранить cc в инстанцированном шаблоне-аналоге FirstPool это дикость, ибо жертвуется производительность в рантайме в угоду удобству компиляции. Как сделать, чтобы член cc инстанцировался только вручную для одного из параметров шаблона? И можно ли это вообще сделать? Пробовал писать что-то в духе YobaClass TemplatePool <SecondClass>::cc при объявлении члена, тогда конструктор считает YobaClass TemplatePool <SecondClass>:: именем класса и не хочет их присваивать.

2. На самом деле, помимо параметра шаблона, который определяет, будет внутри FirstClass или SecondClass, есть еще параметр, совпадающий с AnotherClass, он просто передается во все конструкторы. Если я вручную инстанцирую конструктор шаблона по обоим параметрам, то все заебись. Но мне-то нужно указать различные реализации только для первого параметра, а AnotherClass трогать не нужно, он может быть каким угодно. А когда я пытаюсь инстанцировать конструктор новым шаблоном уже с одним параметром, при сборке пишет, что шаблон конструктора уже определен. Как совладать с этим дерьмом, анон?
sage #23 #490067
>>490060
Вот тут полный код. На шинде он не выводит ничего до тех пор, пока не нажмешь Quit в меню tray.
http://rghost.ru/6QpfgSsY2
sage #24 #490076
>>490067
Просто ты дауненок. Замени std::cout на qDebug() и поймешь, что это отсос стандартной библиотеки, а не Qt.
#25 #490079
>>489941
Самое общее и страшное решение на проверку входных типов:
https://ideone.com/7vRWlH
#26 #490084
>>490062
Наследуй второй пул от первого.
#27 #490089
>>490084
Не, так не получится, у них же разные структуры данных внутри списки из объектов разных классов. Если я наследую второй от первого, то во втором будет лишний список, жраться дохуя будет. А если я, например, наследую оба от абстрактного класса, то реализации методов все равно в каждом будут разные, и никакого выигрыша в сокращении кода не будет.
#28 #490098
>>490062
Что-то страшное ты написал. Я не понял. Почему бы не написать самый общий пул объектов с variadic template и потом трахаться с его частичной специализацией?
#29 #490114
>>490076
this

>>490067
норкоман, ты зачем '\n' хуячишь?

http://en.cppreference.com/w/cpp/io/manip/endl

>Inserts a newline character into the output sequence os and flushes it as if by calling os.put(os.widen('\n')) followed by os.flush().



и как тебе уже сказали, юзай qDebug(), он автоматом перевод строки хуячит в конец
#30 #490115
>>490089
Такое не взлетит?
http://ideone.com/nInyl9
#31 #490118
>>490098
Так ведь мне тут не надо переменное количество параметров шаблона. Переменное количество только параметров у конструктора должно быть, причем, сколько их два или три - просто зависит от одного из параметров шаблона, а не от их количества. Или я не понял тебя просто. Что ты предлагаешь совать в список типов для variadic template?
#32 #490120
>>490118
Предагаю в список аргументов к шаблону пихать тип пуляемого объекта и типы параметров, которые уйдут конструктору при создании объектов.
Набросал на коленке примерную реализацию:
http://pastebin.com/aZUsynrQ
#33 #490121
>>490115
Ох лол, это 10 из 10 просто. Грязный хак с точки зрения логического разбиения, но как изящно-то, блядь!
#34 #490128
>>490120

>CtorArgs... args


Лол, я чота не встречал такого. Это 11 стандарт или 14? Тащемта, выглядит охуенно, но я не уверен, что VC++ это переварит, даже последняя.
#35 #490132
>>490128
C++11, сейчас проверю. TypeLists >>490079 здесь моё спермоподелие 2013 года выпуска переварило.
#36 #490136
>>490132
Ну тогда добра тебе, няша, сейчас попробую. Предыдущему куну с наследуемыми шаблонами тоже добра, я бы, наверное, в итоге что-то типа такого стал делать, но модно-молодежно с функторами и вариадиками выглядит интереснее, лол.
#37 #490145
>>490136
Сперма проглотила, ideone тоже:
http://ideone.com/TC7GJt

Дело за малым: сделать синглтоном и потокобезопасным.
#38 #490146
>>490132
>>490136
>>490145
блджад. где вы берете инфу по новым стандартам, ее ж нихуя в учебниках нет? я только книжку уильямса нашел, но там кроме многопоточности все хуйня. а читать напрямую стандарты или cppreference это пиздец просто
#39 #490147
>>490146
А куда деваться? Приходится курить инфу на ангельском, иначе ничего не узнать. Статьи на хабрах по C++11 неплохо так описывают новый стандарт. Ещё стоит выкурить книжку Майерса:
http://shop.oreilly.com/product/0636920033707.do

Статьи по фотонике – вот это самый страшный пиздец, после этого говна бояться нечего.
#40 #490159
>>490146

>где вы берете инфу по новым стандартам, ее ж нихуя в учебниках нет?


В вики статью прочитай, там все нововведения перечислены же. Потом уже предметно по каждому пункту разбирайся. Олсо, перед выходом стандарта и сразу после каждый день какой-нибудь хуй в своем бложике расписывал за лямбды и rvalue references. Ты реддиты читаешь, хэкир ньюс?
#41 #490162
>>490145
Ну я уже разобрался и реализовал, да. Потокобезопасность у меня сразу была прикручена, а синглтон не вписывается в концепцию, масштабируемость и все дела, типа может быть несколько однотипных инстансов пула, в которых объекты отличаются только по служебным данным. Но это детали уже, а тебе спасибо еще раз.

Алсо, мне кажется, добавлять новые объекты с фронта таки хуже, ибо в некоторых случаях, если работать будут только несколько задних объектов в списке, скорость может улучшиться за счет кэширования. Но зато так получается по-коммунистически, работают все, лол.
#42 #490197
>>490159

>В вики статью прочитай, там все нововведения перечислены же.


this

>какой-нибудь хуй в своем бложике расписывал


this
#43 #490402
Плюсаны у меня в понедельник собеседование на должность джуна в геймдеве. Знаете какие-то особые вопросы на собеседование с учетом специфик?
#44 #490428
>>490402
Хуй знает, загляни в /gd/. Как пройдёшь собеседование, отпишись.
Семинароход, это ты?
#45 #490435
>>490428
Ноуп.
#46 #490483
Крестопетухи должны страдать.
#47 #490484
>>490483
Тут порой так скучно, что я готов тебя выслушать.
#48 #490493
>>490402
Что-то сайт залип
http://blog.gamedeff.com/?p=64
sage #49 #490495
>>490483
Ты сам то кем будешь, сын собаки?
#50 #490545
>>490495
Я буду космонавтом.
sage #51 #490574
>>490545
Космоса не существует, его выдумали жиды чтобы сбивать людей с пути истинного. Земля плоская, а звезды, луна и солнце закреплены на небе, которое суть есть хрустальная полусфера.
#52 #490645
Как в няшном кьюте из объявления в хэдере автоматически создавать методы с пустым телом в одноименном cpp файле?
#54 #490695
>>490645
alt+enter
#55 #490729
>>490647
russisch schwein
#56 #490760
for(int i=0; i<rowNum; i++)
{
delete Matrix[];
}
delete Matrix[];

верно ли очищаю 2мерный массив?

есть ли сахар, позволяющий генерировать и удалять такие массивы без нагромождения циклов (без библиотеки, мне надо именно так).
7 Кб, 282x156
#57 #490762
>>490760
ненависть
#58 #490766
в шаблоне использую
Result=T();
для придания Result нулевого значения переменной.
Есть ли в общем случае требование, что безаргументный конструктор должен возвращать ноль для исчислимых классов (числа, векторы, и т д)?
#59 #490767
>>490760

>есть ли


все есть, если погуглить хорошо
#60 #490768
>>490766

>C++


>безаргументный конструктор должен возвращать ноль


Конечно есть, но тогда конструктор не должен использоваться в качестве делителя.
sage #61 #490770
>>490760
Посмотри как в glm делается и спизди.
http://glm.g-truc.net/0.9.2/api/a00124_source.html
#62 #490771
#63 #490783
>>490762
Зачем так делать?
Не лучше ли сделать так:
class Mat4
{
private:
vec4 v[4];
}
Удобнее.
#64 #490789
>>490760

>верно ли очищаю 2мерный массив?


У тебя не двумерный массив, а массив массивов. Не проще ли выделять память N x M и переопределить оператор индексации, чем для каждой строки выделять память?
sage #65 #490812
>>490729
Чеблять? Таблетки прими.
#66 #490912
>>490789

>У тебя не двумерный массив, а массив массивов


А в чем отличие?
#67 #490953
>>490912
Массив массивов расходует память на хранение ненужных указателей. Двумерный массив M x N элементов размером S занимает ровно M x N x S памяти, и не байтом больше.
#68 #490954
Сук, весь тред в вопросах про массивы и указатели.
#69 #490955
>>490953
Спасибо, я совсем не сишник. ПРосто увидел в треде твой ответ
#70 #491060
Аноны, как в winform считывать в string записывать ^string?
Или может есть другая возможность создать массив строк без string?
#71 #491069
Переспективы учить с++, если я собираюсь в веб, датасайнс, биг дату и еще что-то в таком духе?
#72 #491074
>>491069

>биг дату


Нет.
Сайнсы все в фп
#73 #491187
>>491069
Нету. Лучше Python и R
#74 #491535
>>491074
Можно и фп в крестах замутить.
#75 #491540
Аноны, сижу я такой, по учебнику ваш C++ учу, а задач там нет. Подкиньте сайтов с задачами или что-то в этом роде.
#76 #491544
>>491535
Можно, но зачем микроскопом гвозди забивать?
#77 #491559
Хочу нормальный графический интерфейс к GDB, чтобы подключиться удалённо. QtCreator адово тупит, использовать gdb в терминале неудобно тем, что нельзя переключиться по хистори (или можно?). DDD неплох, но его внешний вид заставляет желать развидеть его.
595 Кб, 1450x1080
sage #79 #491610
>>491540
Напиши борду на крестах. Я написал и недавно у меня обострилось ГТР. Совпадение?
#81 #491641
>>491610
Чому рейкастер вольфенштейна красненький? Я его в 14 лет написал на паскале за три дня. Это не 87, где надо вилкой говно ковырять.
#82 #491663
>>491641

> три дня


это красный уровень, чо.
а если 87 30 дней займет, то это тоже красный.
sage #83 #491665
>>491641
Не ебу, пик не мой, я его даже не читал.
#84 #491668
>>491540
Если до этого никогда не программировал, то решай простые алгоритмические задачи. Диаграмму Вороного для быстрого поиска ближайшего соседа построй, например.
#85 #491673
>>491610
а какая структура бд у борды? сообщения, как я понимаю, - это одна большая куча, а треды? как связывать треды с сообщениями?
#86 #491693
>>491663

>это красный уровень, чо


В 14 лет без интернета - красный. Сейчас я его не напрягаясь за вечер напишу.
#87 #491707
>>491610
Такое чувство, будто меня сейчас обоссут и выебут, но что такое "кресты"? Я полный нуфак.
#88 #491718
>>491693
в том числе и потому, что ты его уже писал:)
#89 #491722
>>491641
Верхний правый угол. Надпись маленьким шрифтом.
#90 #491726
>>491707
Cross-compiling
#91 #491735
>>491726
Эээ... тоо есть это разработка чего-то на одной системе для другой, да?
sage #92 #491736
>>491673
Не знаю, как во всяких классических движках типа вакабы сделано, а у меня пост ссылается на тред. Ну типа class Thread { int id; }; class Post { int id; int threadId; }; Естественно, через foreign key.
sage #93 #491737
>>491707
Не слушай этих петросянов. Кресты - жаргонное название C++ (потому что на конце два креста). Иногда еще говорят "плюсы".
740 Кб, 2560x1920
#94 #491775
Котаны, вторая задача. Не могу сам алгоритм понять. Если было бы фиксированное кол-во городов, тупо можно было бы прописать все варианты и найти наименьший для вывода, но вот если это число нефиксированно...
#95 #491780
>>491775
Да обычная задача минимального расстояния, используй взвешенные графы.
#96 #491782
>>491775
задача на полный перебор

>но вот если это число нефиксированно...


что значит "нефиксированно"? у тебя вводится граф, у него определенное число вершин
#97 #491783
>>491775
Третью до конца сфоткай, похоже на венгерский, самая веселая будет никто в интернетах не умеет верно реализовывать венгерский
#98 #491788
>>491780
Не проходили их ещё. Поясните кратко суть?
#100 #491874
>>489883
Сделай трейт шаблонный, и определи его для стандартных типов. Используй его вместе с enable_if
#101 #491894
Посоны, получил в общем работу на плюсах, теперь у меня где-то месяц есть чтобы подучить их до рабочего уровня, в какой книжке можно почитать не только теорию, но и приёмы применяемые в реальной жизни? паттерны-хуяттерны, стайлгайды, кукбуки, из этой степи хуйню в общем
#102 #491896
>>491894
А чем вы там конкретно занимаетесь? Так, может быть, смогу чего-нибудь реальное подсказать.
Про паттерны у банды четырёх читай. Про всякие идиомы можешь почитать у Александреску хотя хз, как его штуки в энтерпрайзе живут. Покури буст с сырцами.
#103 #491899
>>491896
что-то типа высокоуровневого эмбеддеда(на плюсах, лул), походу немного qt и системной хуйни(драйвера малофья)
#104 #491901
>>491899
Блджад, ещё и в дс2, походу.
Надо бы тред qt-куна призвать да спросить, как в эти qt вкатываться и чего читать.
#105 #491902
>>491901
не, это не в рашке, месяц у меня есть из-за получения визы как раз
#106 #491904
>>491901
да ладно, уж кт я и сам как-нибудь подберу
#107 #491918
>>491901

>как в эти qt вкатываться и чего читать.


я читал официальные доки, серьезно. там всё очень просто и понятно

оттарабанил-2года-на-qt-symbian-кун
sage #108 #491921
Как вы заебали уже. Бери задачу, решай ее, непонятное гугли (по факту все находится либо в доках, либо на СО). Идеальный код сразу ты писать все равно никогда и ни при каких условиях не сможешь, даже если вызубришь все существующие учебники и получишь докторскую по физ-мат наукам. Так что не трать время и начинай писать код. Это единственный путь.
#109 #491922
>>491921

>кудах-тах-тах


вот так индусы из людей и получаются
sage #110 #491956
>>491922
Нет, маня, так получаются те, кто пишет программы. Из кукаретиков же получаются аналоги средневековых "вечных студентов". Первые в итоге набивают шишек и начинают писать хороший код, а вторые так и остаются на всю жизнь писателями факториалов и мамкиными тралами с охуенными амбициями и самомнением, но абсолютно непригодными для написания программ.
#111 #491959
>>491956
не корми

ты с boost::interprocess работал? чо там да как?
sage #112 #492193
>>491959
Не работал. Прочитал сейчас по диагонали. Не понял, в чем твой вопрос.
#113 #492196
Кек, override работает через жопу. C++11/MSVS 2013
Зацените вот

template <class T> class Singleton
{
protected:
void Ctor();
};

template <class T>
void Singleton<T>::Ctor()
{
\t//default constuctor is nice in its emptiness
}

class Kek : public Singleton<Kek>
{
protected:
void Ctor() override; //КО-КО-КО ЭТА ФУНКЦИЯ НИЧЕГО НЕ ОВЕРРАЙДИРУЕТ
}

Но на самом деле оверрайдит, только на кейворд ругается. Эх блядь пичаль.
sage #114 #492198

>через жопу


>MSVS


Кто бы сомневался.
sage #115 #492200
>>492196
Алсо, ты долбоебушка, это тебе не жаба, тут надо, чтоб функция была объявлена как virtual в базовом классе.
http://en.cppreference.com/w/cpp/language/override

>Specifies that a virtual function overrides another virtual function.

18 Кб, 1316x1152
#116 #492201
>>492200
А вот за это спасибо, я видать скоро отстрелю себе всю ногу по самые яйца.
#117 #492202
>>492196
Каким образом у тебя там Singleton<Kek> вообще инстанцируется, если Kek еще не объявлен, а единственное его объявление вот только что началось?
#119 #492204
>>492202>>492203
Всё работает, лол.
sage #120 #492230
>>492196

> синглтон


Дважды подумай, прежде чем этот антипаттерн использовать.
http://stackoverflow.com/questions/137975/what-is-so-bad-about-singletons
#121 #492231
>>492230
если у тебя физически только один ресурс то никак тебе этих проблем не избежать
sage #122 #492235
>>492231
Поэтому я и говорю "подумай дважды", а не "выкини его нахуй"
#124 #492592
>>492202
чёт я не вижу чтобы у него там что-то инстанцировалось
Многопоточность #125 #492632
Друзья, посоветуйте что лучше юзать для реализации многопоточности на виндоус - винапи или фичи с++ 11? Мне вроде как с++ 11 больше понравилось. И накидайте пожалуйста книг или туториалов где эта тема хорошо описана.
#127 #492949
>>492632
C++11, сойдёт вполне.
#128 #493111
Привет, кресто-блядь, вопрос становиться ли мне ею? Я пишу сейчас в основном для веба, в будущеем возможно займусь финансами, бигдатой и анализом данных, сейчас в этих сферах для скоростного трейдинга либо с++, либо с, для обычных ботов Python, R, Scala. Какие сейчас сферы применения c++ кроме геймдев-а и высокоскростного трейдинга? Я еще интересуюсь робототехникой, но там на с++ разве что уже на большие системы писать можно, на мелкие только с
#129 #493118
>>493111

>Я еще интересуюсь робототехникой, но там на с++ разве что уже на большие системы писать можно, на мелкие только с


в современном "эмбеддеде" мегагерц и килобайт больше, чем в моем первом компе
#130 #493138
>>489539
Кореш в хате, а ты где вот щяс?
#131 #493139
>>493138
Утраиваю кореша, нужен кореш, прямо щяс.
#132 #493145
>>493118
Возможно, все что я читал обычно делалось на сишке, но может ты и прав, что можно будет ставить малинку и не парить мозг.
sage #133 #493169
>>493138
Мамку твою ебу.
#134 #493289
>>492635
Хорошая книга.

>>493111
Если есть достаточно времени для освоения, то знание крестов лишним не будет.

> сферы применения


Обработка сигналов и изображений, пилить что-то серьёзное в этой области кроме как на C/C++ трудно. Да и либ для этого дела полно.
#135 #493623
Двач помоги. Весь семетр пинал хуи. Вместо лаб препод дал реализовать простое приложение на Qt - графический редактор. Можно открывать картинку и рисовать на ней линию, а потом решать сохранять так или оставить оригинал. Дайте советов мудрых, ссылок полезных.
sage #136 #493630
>>493623
QGraphicsView, QPixmap
#137 #493645
Братия во кресте, посоветуйте мне одну вещь. Как вылезать из яслей консольных приложений? Что читать, куда копать чтобы учится ваять формы и более-менее осознанные приложения?
#138 #493648
#139 #493653
>>493630
Спс.
#140 #493659
#141 #493700
NMAKE:-1: error: U1077: "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\BIN\cl.EXE" :
NMAKE:-1: error: U1077: "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\BIN\nmake.exe" :
Напомните как пофиксить.
#142 #493733
>>493111

>бигдатой и анализом данных

sage #143 #493751
#144 #493828
Погромисты, нужно сделать работу по теме обработки кос снимков. Есть снимки landsat 8 (это спутник который снимает всю землю). Подскажите библиотеки на крестах с помощью которых можно обрабатывать снимки(очень большие до 1гб), а так же выделять спектральные каналы, и манипулировать с ними. Или ссылочки на готовые библиотеки. С меня как обычно
#145 #493830
>>493828
Очевидный OpenCV или dlib. Расскажи подробнее про задачу.
#146 #493835
>>493830
Есть снимок со спутника landsat 8, у этого снимка 9 спектральных каналов. До этого я открывал эти снимки в программе Envi. Теперь же стоит задача как то обрабатывать эти снимки самому, то есть выделять каналы, уменьшать или увеличивать коэффициент того или иного канала. Пока хотя бы хочется открыть это снимок (вообще их там много, но с помощью Envi я их обьединил в один) и он в формате tif. Препод сказал погуглить опен сурсные программы, ничего толкового найти не могу. Вот как то так. Вот тут в конце, примеры снимков с разными каналами http://www.geol.vsu.ru/ecology/ForStudents/3Graduate/RemoteSensing/Lection04.pdf
#147 #493853
>>493835
OpenCV, вроде бы, может в tiff. Глянуть бы на саму тиффку ещё.
Если OpenCV Не хочется, то вот ещё:
http://trac.osgeo.org/geotiff/
http://www.remotesensing.org/libtiff/
#148 #494128
Подскажи, плюсач! Я тут думаю пойти на стажировку в Яндекс. Я умею писать на плюсах, знаю 11/14, вроде понимаю алгоритмы и ООП. Собственно, вопрос: какие шансы туда попасть? К чему готовиться?

Может, кто-то пытался пойти туда, и может поделиться кулстори?
#149 #494184
Всем привет. Дайте пожалуйста линк, где можно скачать компилятор для С++, хочу поставить CLion.
#150 #494205
>>494128

> какие шансы туда попасть?


Очень сильно зависит от твоего уровня.

> К чему готовиться?


Они очень любят математику и всякие логические нетривиальные задачи. Хз, попробуй глянуть задачки при поступлении в ШАД.

>>494184
http://www.mingw.org/
81 Кб, 573x800
#151 #494211
>>494205
задачки при поступлении...
#152 #494212
>>493927
Движок чего?
Для игорей я использую готовый, прирос уже к нему, свой писать нет смысла.
#153 #494288
>>494205
А не знаешь, насколько им важно наличие высшего образования? Я не закончил свою шарагу, даже неоконченного высшего нету. Стоит пробоваться или это дохлый номер?
#154 #494294
>>494288
Всё, чем я могу помочь в этом вопросе:
http://habrahabr.ru/company/yandex/blog/235171/
#155 #494298
>>494294
Хмм, спасибо! Похоже, им это не очень важно по базе, но, подозреваю, отсутствие ВО будет минусом.
246 Кб, 1600x1200
#156 #494371
посоны, есть код. В нём всё нормально? То есть, эта программа должна запускаться ведь?
А в чём можно запустить?
Дев с++ похоже первой библиотеки не знает, а я только в нём работал немного. Я не программист нихуя, но мне очень нужно запустить эту программу, заранее благодарю за помощь.

#include "stdafx.h"
#include "stdio.h"
#include "conio.h"
#include "windows.h"
#include "math.h"

const float h = 0.05;
const int N = 21;

int _tmain(int argc, _TCHAR argv[])
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);

float x[N], m[N], k[N], f[N], c[N], d[N], y[N];

float A = 0, B = 3.718;
float alpha1 = -1, alpha0 = 1, betta0 = 1, betta1 = 0;

for (int i = 0; i < N; ++i)
{
x = h
i;
m = -2 + h (-2 x);
k = 1 - h (-2 x) + h h (-2);
f = 4 x;
}

c[0] = (alpha1 - alpha0
h) / (m[0] (alpha1 - alpha0 h) + k[0]
alpha1);
d[0] = (k[0]
A h) / (alpha1 - alpha0 h) + f[0] h h;
for (int i = 1; i < N - 2; ++i)
{
c = 1 / (m - k c[i - 1]);
d = f
h h - k c[i - 1] d[i - 1];
}

y[N - 1] = (betta1
c[N - 3] d[N - 3] + B h) / (betta1 (1 + c[N -
3]) + betta0
h);
for (int i = N - 3; i >= 0; --i)
{
y[i + 1] = c (d - y[i + 2]);
}
y[0] = (alpha1
y[1] - A h) / (alpha1 - alpha0 h);

for(int i = 0; i < N; i++)
{
printf("y[%d] = %.4f \n", i, y);
}

system("pause");

return 0;
}
246 Кб, 1600x1200
#156 #494371
посоны, есть код. В нём всё нормально? То есть, эта программа должна запускаться ведь?
А в чём можно запустить?
Дев с++ похоже первой библиотеки не знает, а я только в нём работал немного. Я не программист нихуя, но мне очень нужно запустить эту программу, заранее благодарю за помощь.

#include "stdafx.h"
#include "stdio.h"
#include "conio.h"
#include "windows.h"
#include "math.h"

const float h = 0.05;
const int N = 21;

int _tmain(int argc, _TCHAR argv[])
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);

float x[N], m[N], k[N], f[N], c[N], d[N], y[N];

float A = 0, B = 3.718;
float alpha1 = -1, alpha0 = 1, betta0 = 1, betta1 = 0;

for (int i = 0; i < N; ++i)
{
x = h
i;
m = -2 + h (-2 x);
k = 1 - h (-2 x) + h h (-2);
f = 4 x;
}

c[0] = (alpha1 - alpha0
h) / (m[0] (alpha1 - alpha0 h) + k[0]
alpha1);
d[0] = (k[0]
A h) / (alpha1 - alpha0 h) + f[0] h h;
for (int i = 1; i < N - 2; ++i)
{
c = 1 / (m - k c[i - 1]);
d = f
h h - k c[i - 1] d[i - 1];
}

y[N - 1] = (betta1
c[N - 3] d[N - 3] + B h) / (betta1 (1 + c[N -
3]) + betta0
h);
for (int i = N - 3; i >= 0; --i)
{
y[i + 1] = c (d - y[i + 2]);
}
y[0] = (alpha1
y[1] - A h) / (alpha1 - alpha0 h);

for(int i = 0; i < N; i++)
{
printf("y[%d] = %.4f \n", i, y);
}

system("pause");

return 0;
}
#157 #494372
>>493145
в армовых атмелах и stm32 есть до 512кб флеша(!!!) + 64кб рамы. туда уже блядь не просто плюсы суют, туда уже блядь луа с жабоскриптом хуячат
эмбеддед нахуй бля!
159 Кб, 1280x853
#158 #494374
>>494371 Вот, что пишет при компиляции в дев с++
stdafx.h: No such file or directory.
#159 #494376
>>493623
в экзамплах есть basic drawing, это не совсем то, но там показано как рисовать вообще

>>493630

>QGraphicsView


только если нужно что-то типа diagram scene из экзамлов
#160 #494377
>>494371
>>494374
Не актуально! Помог сосед по общаге с факультета ПИ :3
#161 #494711
Програноны, выручайте.
Где можно прочитать про дискретизацию и квантование изображений в Qt? (В Шлее не нашёл нихуя, гугл молчит).
#162 #494713
>>494711
Что ты подразумеваешь под дискретизацией в Qt? Как непрерывные сигналы собираешься в комплюхтер загружать?
Какое квантование тебе нужно?
На сколько я знаю, Qt – не либа для обработки изображений.
#163 #494714
>>494711
Тривиальное квантование описывается одной формулой.
Для квантования цветных картинок можно решать задачу кластеризации.
#164 #494715
>>494713
Задание моё звучит так:
"Дискретизация кадра, хранящегося в объекте QImage библиотеки Qt, полученного с устройства видеозахвата библиотеки компьютерного зрения openCV."
И то же самое с квантованием.
#165 #494723
>>494715
Qt тут не причем, же. Выгружаешь из QImage пиксели в массив, ну или три (четыре) дискретизируют наверное каждый цвет отдельно, пердолишся с байтами, может библиотека какая есть. Полученое снова заливаешь в QImage.
#166 #494726
>>494715
Пиздуй задание уточнять.
#167 #494731
>>494726
так задание я и изложил.
это теоретический вопрос.
#168 #494732
>>494731
Ты понимаешь, что такое дискретизация? Может быть, тебе какой-нибудь ресемплинг нужен?
#169 #494734
>>494732
я изложил как есть. если б я хоть каплю понимал в чем дело, то не стал бы тут о помощи молить.
#170 #494761
Как в Qt рисовать на виджете? Никак не могу найти нормальный мануал.
#171 #494768
>>494761
Встроенный. QPainter.
#172 #494799
>>494768
Я ему передаю указатель на дочернее окно (виджет) и нихуя.
#173 #494802
>>494799
Кек. Открываем справку по QWidget. Читаем:

Custom Widgets and Painting

Since QWidget is a subclass of QPaintDevice, subclasses can be used to display custom content that is composed using a series of painting operations with an instance of the QPainter class. This approach contrasts with the canvas-style approach used by the Graphics View Framework where items are added to a scene by the application and are rendered by the framework itself.

Each widget performs all painting operations from within its paintEvent() function. This is called whenever the widget needs to be redrawn, either as a result of some external change or when requested by the application.

The Analog Clock example shows how a simple widget can handle paint events.

Особое внимание на последний абзац.
#174 #494808
>>494802
Его нужно перерисовывать после выполнения eventPainting? Как?
#175 #494822
>>494808

>Его нужно перерисовывать после выполнения eventPainting?


в обработчике события paintEvent

>Как?


открой блядь доку
в обработчике создаешь QPainter painter(this); и рисуешь

это всё относиться к qt 4.x, для qt 5.x ОТКРОЙ БЛЯДЬ ДОКУ
#176 #494829
Я смотрел доку.
У меня есть класс окна Batya, в нем виджет Syna. Вот чтобы отрисовать на сыне из бати вызвается этот метод отрисовки и ему передается указатель на сыну и нихуя.
#177 #494838
>>494829

>виджет Syna


для виджета Syna определяешь функцию paintEvent (у тебя же Syna — это класс, а не инстанс, я надеюсь?)
#178 #494842
>>494838
Я не оправдал твоих надежд.
#179 #494847
>>494842
хуйово быть тобой
#180 #494853
>>494847
49->48->47
kek
#181 #495109
#182 #495117
Аноны, подскажите, как реализовать мониторинг запущенных процессов с возможностью их завершения ?
#183 #495178
>>494847
Я короч сделал, отрисовывает. Но вот теперь хочу заставить квадрат двигаться
#184 #495193
>>495178
Нужно было заснуть апдейт в отрисовщик
#185 #495231
мне была поставлена задача выучить за год с++. я справлюсь? это возможно?
sage #186 #495254
>>495231
Ну и хули ты сюда-то пришел? Иди учи.
http://www.youtube.com/watch?v=nuHfVn_cfHU
sage #187 #495272
>>495254
уже учу блжад
#188 #495276
>>495254
Синтаксис - возможно.
http://abstrusegoose.com/249
#189 #495333
Опять я.
Qt. Загрузил картинку в виджет (QPixmap), порисовал в виджете pen'ом как теперь все это сохранить правильно (картинку с нарисованым)?
#191 #495401
>>495178
>>495193
QTimer ⁕timer = new QTimer(this);
connect(timer, SIGNAL(timeout()), this, SLOT(repaint()));
timer->start(1000);
55 Кб, 757x68
114 Кб, 914x88
#192 #495708
Написал класс для работы с матрицами, все работало нормально.
Решил сделать шаблонную типизацию, чтобы элементом матрицы, могла быть тоже матрица. В итоге пикрилейтед.
Что ему не нравится? Как вообще нужно переопределять операторы в шаблонных классах?
#193 #495713
>>495708

>Решил сделать шаблонную типизацию, чтобы элементом матрицы, могла быть тоже матрица.


Задротов полон тред. Когда встретится тебе эта задача, тогда её и напишешь.
Сейчас её решение стоит 52500 на руки в ДС1, при средней 77500 для программистов.
С чем нас всех и поздравляю. Вечная нам память.
566 Кб, 2560x1920
#194 #495723
>>495713

>Когда встретится тебе эта задача


Так она уже встретилась. Нужно реализовать метод конечных элементов. Задание пикрилейтед.
В этом методе практически все расчеты основаны на матрицах, причем встречаются и матрицы матриц.
#195 #495735
>>495708
Текст варнинга принёс бы хотя бы.
>>495723
Тензоры ты имел в виду?
49 Кб, 581x386
#196 #495739
>>495735
Весь текст варнинга на пике

>Тензоры ты имел в виду?


Не знаю, мне только алгоритм объяснили. Даны точки ABCD, из них составляется фигура, например трапеция, как на пике. Затем эта фигура разбивается на какое-либо количество элементов-треугольников. Ну а дальше начинается вакханалия с матрицами.
#197 #495748
#198 #495849
Qt.
Как отрисовывать картинку QPixmap в виджете, чтобы она не замощалася (как методом brush)
#199 #495856
Двач, мне нужен гайд по произношению в C++
Вчера общался с человеком(хикка, и с людьми общаюсь редко, особенно на тему программирования) и понял, что я неправильно произношу очень многие вещи.
Например cin и cout я всегда произносил как "кин" и "каут" вместь "си-ин" и "си-аут", а char как "чар", вместо "кар". В общем нужен гайд о том, как правильно произносить название команд, функций, и тд.
#200 #495860
>>495856
В /fl/ есть где-то тред, который тебе поможет
#201 #495910
>>495856
Учи английский, смотри видео лекции и конференции.
#202 #496101
>>495856
Тут между Явой и Джавой определиться не могут, а ты хочешь, чтобы тебе произошение каждого оператора написали. Нету в английском языке правил произношения, забей на это.
#203 #496105
Посоны, может поможете с лабой по СИ.

Дан массив вещественных чисел , состоящий из n элементов(N=20)найти в какой половине находится минимальный и максимальный элемент!

Будьте же людьми, завтра зачет
#204 #496106
Привет, товарищи. Учусь в шараге, учим С++. Используем мерзкий С++Builder, от которого у меня постоянные ошибки и рвотные рефлексы.
Поставил себе VisualStudio 2012. Посоветуйте линки, где можно ознакомиться с формами и средой разработки в целом(но важнее именно формы, т.к. в сибилдере формы более-менее освоил, но тут они отличаются).
И какую графическую библиотеку лучше использовать- OpenGL/SFML?

Cпасибо.
#205 #496117
>>496106
Builder не нужен, MFC тоже. Единственный нормальный GUI фреймворк на C++ - это Qt. Ставь QT Creator, документация с примерами идет вместе с ним.

> И какую графическую библиотеку лучше использовать- OpenGL/SFML?


Не работал с SFML. Я использовал SDL + OpenGL, но это просто Си (без плюсов). Если будешь писать только под винду, можно использовать DirectX (для графики - Direct3D). А вообще лучше взять какой-нибудь готовый движок.
#206 #496119
>>496106

Если ты действительно хочешь знать что такое С++(зарабатывать деньги) начинать нужно в пердольке, компилирую ручками. Потом сиди в каком хочешь GUI, но без знание пердольки будешь говном-специалистом.
#207 #496120
>>496101

> Тут между Явой и Джавой определиться не могут


Правильно - жаба.
#208 #496122
>>496106
Если тебе для игорь и в 2d - то советую sfml. Она охуенно проста, любой разберется, и все, что нужно, в ней есть.
#209 #496155
#210 #496185
>>495856
Во у людей проблемы-то! На самом деле, абсолютно посрать, как ты говоришь, если тебя понимают. Но лучше действительно стараться говорить как все.

Я ни разу не слышал, чтобы "чар" называли "каром". Ты же говоришь "двач", а не "двак". "Си-ин" и "си-аут" -- потому, что напрашивается расшифровка этого как C-input и C-output, где C -- название языка.

Вообще, понапиши, что ли, как ты другие штуки произносишь, прям даже интересно стало.
#211 #496205
>>495708
где template<typename Type> ????
а еще матрицы по ссылке передавать наверно надо (и я сомневаюсь что ты запили CoW)
#212 #496207
>>495849

>замощалася


щито?

возможно вы искали QLabel.setPixmap?
#213 #496208
>>496207

>QLabel::setPixmap


selffix
2006 Кб, 375x209
#214 #496216
>>496117

> Builder не нужен, MFC тоже. Единственный нормальный GUI фреймворк на C++ - это Qt.


НАЧА-А-А-А-А-А-АЛЬНИК
7 Кб, 259x194
8 Кб, 275x183
9 Кб, 320x240
#215 #496217

> VCL


> MFC


> Qt

#216 #496226

>Я ни разу не слышал, чтобы "чар" называли "каром". Ты же говоришь "двач", а не "двак". "Си-ин" и "си-аут" -- потому, что напрашивается расшифровка этого как C-input и C-output, где C -- название языка.


Ловите поехавшего!
Кар по тому, что Char это сокращение от Character(Карактер). Ты школа(School) как говорить будешь? Счул?
А в C-input и C-output C это не название языка, а Console
#217 #496231
>>496226

>Кар по тому, что Char это сокращение от Character(Карактер).


тогда уж кер, он же керэктэр.
Но все говорят чар, так или иначе
#218 #496243
>>496105
ебать ты аутист, нахуя ты вообще на погруниста пошел?
int index_min = 0;
int index_max = 0;
for(int i = 0; i < N; ++i){
if(massive > massive[index_max]) index_max = i;
if(massive < massive[index_min]) index_min = i;
}
Надеюсь как определить половину массива сам догадаешься...
#219 #496265
>>496185
Console input, console output, console error. откуда вы такие лезете?
#220 #496275
>>496106
SFML, считай, почти прослойка для опенгла на уровне рисования треугольничков в 2д.
#221 #496292
>>495735

>Тензоры ты имел в виду?


Скорее всего он имел ввиду блочные матрицы.
#222 #496306
>>496226
>>496265
Не важно, откуда это сокращение. Чаще всего в английском "ch" на начале слова читается как "ч". Кстати, ролевики персонажа обычно тоже называют "чаром", а это сокращение ровно того же слова.

Насчет же си-ин, си-аут и т.д. я говорю о том, что напрашивается, а не о том, как на самом деле. Впрочем, они могут идти и не в консоль, зависит от.
#223 #496310
>>496306
ну я слышал как нативы говорят и кар и чар
sage #224 #496315
Лол, я вообще говорю "цэ-ин, цэ-аут". Кого ебет, срсли? Закончил школу с английским уклоном, очень сильной училкой, спец. предметами типа англ. литературы, англ. истории и перевода, все дела. Правда, уже проебал словарный запас за ненадобностью, но все равно ссу снобам в ротешники. Как хочешь, так и говори. Начнешь общаться в определенной среде - сам незаметно переймешь устоявшиеся в этой среде варианты.
#225 #496327
>>496310
Ну, логично. Это как "звонИшь" и "звОнишь" у нас. Язык меняется со временем.
#226 #496425
>>496327
ну и похуй в таком случае
196 Кб, 1200x1047
Ментор ++ Алёна #227 #496937
Господа, в том треде писал , кто-то даже откликнулся, но потом дал заднюю.
в общем:
Собираюсь уволиться с работы , чтобы наконец нормально вкатиться в pr.
Говорю сразу - не дуб, многие вещи понимаю, знаю или слышал.
Просто у меня с постановкой задач для самого себя возникают проблемы , и с практикой
Почитаю книги, напишу пару прог, а дальше что-то делать мотивации не хватает - от неуверенности в том, что делаю дело, а не хуйню.

В общем, ищу Ментора наставника на пару летних месяцев - нужен вектор и небольшая помощь советами в плане : на что обратить внимание, а на что нет.
Как то так.
спасибо)

P.S ^ C++ - язык
sage #228 #497060
>>496937
А контакты оставить?
#229 #497100
Плюсаны, а вот допустим, что у меня есть variadic template метода с двумя пачками параметров. Есть возможность реализовать их попарное сравнение (например, вернуть (a1 == b1) && ... && (an == bn)) одновременно красиво (чтобы не обмазываться calling convention'ами и байтоебством) и без изъебств с лишней генерацией кода (рекурсия с отрезанием по одному параметру с хвоста или подобное говно)? Я пока придумал только вариант, где пачки сначала загоняются в списки инициализации для контейнеров, а потом делается проход по контейнерам. Но это костыль какой-то, в рантайме будут контейнеры заполненные в лучшем случае дохуищем ссылок на элементы пачек, а на самом деле достаточно же в каждый момент времени только пары ссылок на очередные параметры. Что же делать?
#230 #497118
>>496937
>>497060
Да я думал подождать пока кто тут откликнется.
почта - orehov.oreh@bk.ru
42 Кб, 700x573
#231 #497122
>>497118

>@bk.ru

#232 #497123
>>497100
А по-другому никак, скорее всего, ёбли будет много. Придётся натрахаться с тульпами туплями и кучей шаблонного говна.
http://stackoverflow.com/questions/26902633/how-to-iterate-over-a-tuple-in-c-11
#233 #497128
>>496937
Охуительно, я вот три года назад не придумал искать себе гида в pr на сосаке.
#234 #497133
>>497123
Я пораскинул мозгами сейчас и понял, что можно сделать что-то в духе list <bool> results { (args1 == args2) ... }, чтобы не юзать кортежи со всяким говном. Но тут таки остается маленькая проблема - канонично было бы сделать, как в нормальном условном выражении, чтобы если первая пара не совпала, то сразу бы возвращалось false, и дальше ничего не считалось. А так получается хранение результатов всех попарных сравнений, вплоть до конца списка. Может, можно в список инициализации воткнуть какую-нибудь лямбду, или что-то подобное сделать?
#235 #497138
>>497133
Бррр... сейчас попробую накидать это говно.
#236 #497140
>>496937
Шилдт, Майерс, Гамма, Макконнелл, Саттер, Джоссатис, Александреску [, Страуструп]. Именно в таком порядке.
#237 #497149
>>496937
Псст, парень. Не хочешь немного кроссовок?
#238 #497150
>>497133
почему нельзя взять
make_tuple(a...) == make_tuple(b...)
?

тульпы сравниваются поэлементно же
#239 #497153
>>497150
Хуясе, а я как обычно начал хуярить костыль.
#240 #497154
>>497150
Дык можно, никто не спорит. Но смари, в инстанцированном методе будут создаваться эти тульпы на основе параметров, и это отожрет производительность. Для того, чтобы получить ответ, ничего, кроме параметров по факту не нужно, а мы будем хуярить лишние структуры данных и копировать их.
#241 #497156
>>497154
думаешь компилятор не справится с такой оптимизацией?
#242 #497157
>>497140
Чому так много? А можно сразу со Страуструпа? Что скажешь насчёт Прата, Дейтелов?
#243 #497159
>>497150
Что будет в результате сгенерировано? Что-то вот такое:

[code lang = "cpp"]
bool unique_f (int a1, char a2, YOBA a3, int b1, char b2, YOBA b3)
{
\treturn (make_tuple (a1, a2, a3) == make_tuple (b1, b2, b3));
}
[/code]

То есть, у нас во время работы есть два набора параметров, две их копии в тульпах, да еще и проблема из >>497133 остается.
#244 #497160
>>497159
Поебись с perfect forwarding. Скинь решение потом.
#245 #497165
>>497156
Я бы даже сказал, что скорее всего не справится. Если параметры передаются по ссылке, то юзать move semantics будет запрещено, чтобы не попортить. В качестве типов в тульпах может быть любой пользовательский класс, шаблон же. А в этом пользовательском классе может быть нестандартно реализовано копирование, причем компилятор это не увидит, тому що реализация вообще может быть в другом модуле. Он зассыт неявно поднасрать тебе, вдруг ты специально добавил преферанс и блудниц в конструктор копирования, и не ждешь, что они тут вылезут.
#246 #497166
>>497165
окай, std::tie --- те же тульпы, только lvalue references
101 Кб, 1004x765
#248 #497173
>>497170
добавляем std::string к комплекту: http://pastebin.com/dkpGuqzX
#249 #497177
>>497173
Грустно достаточно.
Интересно, а как спермоподелие там справляется.
#250 #497187
По идее, массив тут на хуй не нужен уже, но нельзя просто взять и распаковать пачку вне какого-то из контекстов. А сишный массив самый легковесный из контейнеров, поддерживающих {}-инициализацию.

[code lang="cpp"]
template <typename ... Args>
bool f (Args ... args1, Args ... args2)
{
\ttry
\t{
\t\tbool results []
\t\t{
\t\t\t([&args1, &args2] ()
\t\t\t{
\t\t\t\tif (args1 != args2)
\t\t\t\t\tthrow (1);
\t\t\t\treturn false;
\t\t\t} ()) ...
\t\t};
\t}
\tcatch (...) { return false; }

\treturn true;
}
[/code]
#251 #497228
>>497154
std::tie. В релизе превращается в чистое сравнение по элементам со всеми оптимизациями.
#252 #497301
>>497157
1. Потому что с уровня "не писал на плюсах, могу хелловорлд на чистом си" до уровня нормального разработчика, умеющего в реальные задачи. Знаешь кресты поверхностно? Шилдта можно по диагонали. Вообще не кодил? Добавь перед Шилдтом Кернигана-Ричи про чистый си и Таненбаума про архитектуру пекарен. Короче, точки входа меняются, но последовательность всегда одна.
2. Не рикамендую. Он и так факультативно и в конце. Хардкорнее только читать сам стандарт. Много букв, написано довольно сухо, может отбить желание.
3. Не читал. Вполне возможно, что годнота, но в категории must read для крестопидоров их нет.
#253 #497303
>>496937
>>497128
если сарказм, то я ж не только тут ищу)
#254 #497304
>>497301
действительно Страуструпа нельзя с нуля. Скажи одну единственную книгу перед Страуструпом если ни разу не прикасался к прогерству. нужно сразу изучать времени нет на хождения вокруг да около. Таненбаум нинужен, т.к. читал Скотта Мюллера.
мимодругойанон
#255 #497310
>>497140
>>496937
>>497140
>>496937

>>497140
>>497140
ладно, допустим.
А что делать между книгами?
С чтением проблем особых нет, но когда закончится вторая книга книга первую начинаешь немного забывать, и не сказать, что толку совсем ноль, но без Практик реального pr почти так и есть.
хотя я и понимаю, что на совсем пустую голову так нельзя
sage #256 #497370
>>497310

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


Еще один все понял. Просто пиши код. Книги читают с определенной целью, а не просто так. Например, чтобы улучшить свой код. Если ты не пишешь код, а только читаешь книги, то ты все делаешь неправильно.
#257 #497393
>>497370

>Если ты не пишешь код, а только читаешь книги, то ты все делаешь неправильно


cпасибо кэп, я это итак понял.
Я не хочу писать велосипеды, хотя это и полезно - не спорю.
sage #258 #497405
>>497393
Устраивайся на работу тогда. Хотя и там ты тоже будешь писать велосипеды.
#259 #497408
>>497405
не цепляйся к словам.
дык, я же уже и расписал зачем мне ментор :
чтобы помог вкатиться в коммерческое программирование - человек, который уже относительно давно пишет и знает, грубо говоря, на что нужно обратить внимание а на что можно немного положить
#260 #497409
>>497405
>>497408
чтобы уже с багажом каким-никаким устроиться на работу
#261 #497410
>>497157
Прата - норм.
sage #262 #497426
>>497408
Надо уметь разбираться в чужом коде, уметь пользоваться системами контроля версий (какими именно - зависит от конкретной компании), уметь ясно излагать мысли и слушать других, владеть английским, чтобы не писать int KOLODA; (тру стори, перпод так писал), ну и, разумеется, знать предметную область (тут уже никаких конкретных рекомендаций никто дать не сможет, все зависит от того, что ты сам выберешь). Зубрить STL и виды контейнеров нет никакого смысла, но минимальный их набор знать нужно: список, словарь, стек, вектор, ну и чем они отличаются. Еще неплохо знать SQL. Все остальное (в том числе алогритмы и байтоебля) относится к предметной области и обязательно к изучению только в том случае, если ты с этим будешь работать (никому нахуй не интересно, знаешь ли ты все виды сортировок, если ты пишешь GUI - просто юзаешь стандартный квиксорт и чувствуешь себя сухо и комфортно). Знание фреймворка(ов) будет большим плюсом (в том числе потому, что помогает понять, как делаются настоящие большие проекты).
Вот, собственно, и все. Выбирай, чем ты хочешь заниматься, и вперед. Погромирование - инструмент, а не самоцель. Оно помогает решать задачи в предметной области, а потому надо исходить из цели, а не из инструмента. Может так статься, что ты через полгода будешь писать на жабе или на, прости г-споди, руби. Не зацикливайся на инструменте.
sage #263 #497427
>>497410
Подтверждаю. Но только для новичка. Для того, кто умеет внятно объяснить отличие ссылки и указателя в прате ничего нового и интересного не найдется. Начинал с него, когда только учился крестам и погромированию вообще, недавно пролистал новое издание - вообще ничего интересного. Лучше потратить время на написание еще одного велосипеда.
#264 #497533
>>497304
Есть как бы три уровня погроммирования.
1. Просто знать синтаксис языка, самые основные правила, чтобы не выстрелить себе в ногу, и уметь написать говнопрограмму из 100 строчек. Для этого можно читать вообще любой учебник для нюфагов, ибо они отличаются только глубиной разжевывания фич, да и то не сильно. Для крестов очень хорошие - Шилдт, Лафоре, Прата. Я в свое время читал Шилдта и рекомендую его, но тут рли разницы нет, читай любую.
2. Собственно погроммирование более высокого уровня, решение всяких небольших задач, но изящно и/или оптимально. Написание консольных утилит и олимпиадки из этой серии. Именно этому учат в нормальном универе, изучить сами кресты тут недостаточно. Нужно дрочить алгоритмы и много практиковаться, чтобы накопить собственную коллекцию фич. Из-за маленького объема кода на этом уровне ты можешь игнорировать паттерны, тестирование и прочие атрибуты НАСТОЯЩЕЙ РАЗРАБОТКИ.
3. Разработка ПО. Обычно у всяких олимпиадников при переходе на этот уровень происходит разрыв шаблона, ибо в универе этому не учат вообще, и оказывается, что навыки экономии байтов нужны редко, а вместо олимпиадки, где ты пишешь только интересную часть программы без обработки ошибок, тупых пользователей, и вообще задача околоматематическая и небольшая, нужно хуярить проект на миллион строк, в котором самой сложной структурой данных будет красно-черное дерево. Да и за его реализацию ПМ даст пизды, потому что оно есть в STL. Основные навыки - писать понятно и безопасно, даже в ущерб производительности, не изобретать велосипеды, работать в команде с другими погроммистами VCS и вот это все. И вот здесь тебе понадобятся книжки в духе "33 паттерна", "Как перестать говнокодить и начать жить", ну ты понел. Иначе ты будешь писать лютый говнокод, который будет сложно поддерживать. Более того, в большом коммерческом проекте ошибки дорого стоят, поэтому нужно помнить фичи, которые на уровне 2 бы показались полным ебланством гугли RAII и COW. В списке >>497140 здесь все книжки, кроме Шилдта, относятся, скорее, именно к этому уровню, хотя их недостаточно, разумеется.
#264 #497533
>>497304
Есть как бы три уровня погроммирования.
1. Просто знать синтаксис языка, самые основные правила, чтобы не выстрелить себе в ногу, и уметь написать говнопрограмму из 100 строчек. Для этого можно читать вообще любой учебник для нюфагов, ибо они отличаются только глубиной разжевывания фич, да и то не сильно. Для крестов очень хорошие - Шилдт, Лафоре, Прата. Я в свое время читал Шилдта и рекомендую его, но тут рли разницы нет, читай любую.
2. Собственно погроммирование более высокого уровня, решение всяких небольших задач, но изящно и/или оптимально. Написание консольных утилит и олимпиадки из этой серии. Именно этому учат в нормальном универе, изучить сами кресты тут недостаточно. Нужно дрочить алгоритмы и много практиковаться, чтобы накопить собственную коллекцию фич. Из-за маленького объема кода на этом уровне ты можешь игнорировать паттерны, тестирование и прочие атрибуты НАСТОЯЩЕЙ РАЗРАБОТКИ.
3. Разработка ПО. Обычно у всяких олимпиадников при переходе на этот уровень происходит разрыв шаблона, ибо в универе этому не учат вообще, и оказывается, что навыки экономии байтов нужны редко, а вместо олимпиадки, где ты пишешь только интересную часть программы без обработки ошибок, тупых пользователей, и вообще задача околоматематическая и небольшая, нужно хуярить проект на миллион строк, в котором самой сложной структурой данных будет красно-черное дерево. Да и за его реализацию ПМ даст пизды, потому что оно есть в STL. Основные навыки - писать понятно и безопасно, даже в ущерб производительности, не изобретать велосипеды, работать в команде с другими погроммистами VCS и вот это все. И вот здесь тебе понадобятся книжки в духе "33 паттерна", "Как перестать говнокодить и начать жить", ну ты понел. Иначе ты будешь писать лютый говнокод, который будет сложно поддерживать. Более того, в большом коммерческом проекте ошибки дорого стоят, поэтому нужно помнить фичи, которые на уровне 2 бы показались полным ебланством гугли RAII и COW. В списке >>497140 здесь все книжки, кроме Шилдта, относятся, скорее, именно к этому уровню, хотя их недостаточно, разумеется.
#265 #497535
>>497533
Лол, даже не представляю как, понимая это, можно не испытывать отвращение к программированию и так спокойно это всё писать, будто даже норм и к этому надо стремиться.
#266 #497537
>>497535

>понимая это


Что именно у тебя вызывает отвращение?
sage #267 #497538
>>497535
Вот молоток - это штука для забивания гвоздей. Тупейшее устройство чтобы долбить им по шляпке. Начинай теперь испытывать отвращение к молотку. Аналогию понял?
#268 #497541
>>497538
Да, но лично мне непонятно как можно увлекаться молотками, читать про них книжки, обсуждать их на борде блять, вообще пушка. Я сюда хожу чисто попиздеть и поностальгировать, а вот хули вы здесь забыли - неясно.
sage #269 #497549
>>497541
А хули "мы". Я анону помогаю, да дебилам с лабами в ротешник ссу. Книжки читаю только тогда, когда хочу узнать новый способ использования молотка для какой-то конкретной задачи. В остальное время просто заколачиваю гвозди, строя то, что мне требуется.
#270 #497568
>>497535
Ну дык, няш. Есть манямирок, а есть реальность. От того, что ты будешь внушать себе, что в индустрии все охуенно, на самом деле охуенно не станет. Только адекватно оценивая ситуацию, можно приспособиться. И да, на самом деле это только звучит страшно. Если ты шаришь, то даже не будешь задумываться об этой хуйне. Это как с велосипедом, например, сложно только в начале, а потом берешь и едешь.
#271 #497570
>>497549
Два std::set <Tea> этому благородному дону.
#272 #497589
>>497393
Пиши велосипеды. Ты должен понимать как устроены и работают сущности - алгоритмы, структуры данных. Возьми курс SICP или Седжвика и пиши всё подряд.
#273 #497593
>>497568
Да причём здесь это. Я про то, что если это тупо вьёб, то хули тут интересного, и про что тут говорить? Лучше б книжки почитали, или аниме посмотрели, или там спортом занялись. Это ж куда увлекательнее молотка. Алсо, если из таких позиций исходить, то это даже вредно, тк кодинг такая область где любой сеанс чтения хотя бы на полчаса в день очень быстро делает тебя оверквалифаед забивателем гвоздей, так что тебе некуда все эти знания девать будет. Не, ну может и есть конченые дибилы которым реально надо всё время учиться, просто чтобы не уволили, но среднему кодеру того что он нагуглит непосредственно во время решения задач на работе будет даже гораздо более чем достаточно для того чтоб продолжать получать не просто те же деньги, но ещё и идти на повышение, в случае, если он ещё не достиг кодерского потолка где-то так в 4к.
#274 #497657
>>497593
Хочешь интересного – иди в науку, но там заёбов не меньше.
.
#275 #497789
>>497304

> Скажи одну единственную книгу перед Страуструпом если ни разу не прикасался к прогерству.


K&R
#276 #498183
>>497789
не понял.

>>497593
сам ты аниме

>>497657
научные заебы восприму как благость

>>497533
ты немножко не понял. я за год должен выучить плюсы и фортран чтобы вкатиться свер своих сил манямечты в науку
#277 #498184
>>498183

>сверх

#278 #498198
>>498183
керриган и ричи: введение в похапе
#279 #498203
>>498198
молодец. возьми конфетку
186 Кб, 508x700
#280 #498215
>>498183

>2015


>фортран

#281 #498221
>>497593
А хуле интересного автолюбители находят в ковырянии в гараже? Лучше в сервис тачку сдать и пива бухнуть, епты! В тянках хуле интересного? У той пизда, и у этой пизда, одну выебал и хватит, дальше ничего нового. Алсо, про книжки и аниму тоже нечего говорить. Ты посмотрел, он посмотрел, ну и все, какая польза от обсуждения? Да и смотреть/читать тоже бесполезно, там же все не как в жизни. Ну ты понел.
#282 #498222
>>498203
ом-ном-ном
#283 #498230
>>498215
Увы, но он живее всех живых.
28 Кб, 616x381
#284 #498273
Пишу симулятор терминала из фоллача3. Компилятор жалуется на 8 стоку. Что я делаю не так?
#285 #498274
>>498273
исправь в 5 строке char str на char *str
#286 #498296
>>498273
[CODE]void output(const char* s) {
while(s != '\0') {
std::cout << s++;
sleep(10);
}
}[/CODE]
#287 #498612
>>498273

>using namespace std;


>c-like строки


>while с костылями вместо for (auto chr : str)


>глобальная функция с undercase именем


>"=" без пробелов


Просто СЪЕБИ.
#288 #498625
>>498296
[code lang="cpp"]
void delayedPrint (std::ostream & out, const std::string & input)
{
\tstd::for_each (input.begin (), input.end (), [] (const char & chr)
\t{
\t\tout << chr;
\t\tstd::current_thread::sleep_for (std::chrono::milliseconds (10);
\t});
\tout << std::endl;
}
[/code]
#289 #498630
Братишки, а замерьте кто-нибудь время создания на среднестатистической пекарне std::thread с пустой функцией, пожалуйста. Примерно хотя бы. Под рукой компилятора нет, а онлайновый может и хуйню показать, там же виртуалки и все дела. Вот что-то такое измерить я прошу:

auto start = std::chrono::high_resolution_clock::now ();
std::thread thr ([=] () {});
thr.detach ();
auto finish = std::chrono::high_resolution_clock::now ();
std::cout << (std::chrono::duration_cast <std::chrono::milliseconds> (finish - start)).count () << std::endl;
#290 #498714
>>498630
Проверял на MinGW. Либо оно убирает (из-за оптимизаций, хотя я поставил -O0) все к чертям, либо протсо это все отрабатывает меньше чем за наносекунду (не говоря уж про милисекунды). Комп такой: https://www.asus.com/Notebooks_Ultrabooks/N56VZ/
#291 #498717
>>498714

>просто


Не_особо_быстро_фикс
sage #292 #498756
>>498630
Ну охуеть теперь, проверять производительность наносекунд.
Чем заниматься наноизмерениями, лучше создай 9000 таких тредов в цикле и раздели результат на 9000.
#293 #498839
>>497533
Не все ли потеряно, если мне через месяц 22 и я на начале лвл 2? По спецухе инженегр, кресты нужны для всяких конечно-элементных матанов.
#294 #498845
Господа, пробежался по треду, но так и не нашел литературы для энтрилевельных после паскаля для ЕГЭ. Не могли бы вы спалить годноты?
#295 #498847
>>498845
Лафоре или Прата.
#296 #498859
>>498714
Спасибо, няш, добра тебе. Потом проверю в цикле еще, но пока можно считать, что оно быстро создается. А то я чота внезапно сел на измену из-за подозрений в медлительности и стал придумывать, как поточный пул подружить с std::async, лол.
#297 #498861
>>498839
Если постараешься, энивей сможешь выгодно отличаться от среднестатистической макаки.
#298 #498862
g++ vs VC++ vs clang
Дискач.
#299 #498870
Посоны, сам занимаюсь вебом, понадобилось поправить исходник софта на С. Я в этом нихуя не понимаю, скажу сразу. Суть в том, что надо проверить вхождение одной строки в другую через strstr. У меня есть строка, в которой надо искать, типа char (обычный, не указатель), она уже задана в исходнике. Строку, которую надо искать, я могу ввести сам. Вопрос: как все это сделать?
char haystack[7] = "abcdef"; // это уже есть в исходнике
Пробовал добавить
char needle[5] = "abcd";
и потом strstr(haystack, needle);
но нихуя не работает. Как будет правильно?
#300 #498875
>>498870
А не, все нормально. Поздно уже, в глаза долблюсь.
sage #301 #498893
>>498862
Говно vs моча vs конча.
#302 #498998
>>498862
На хуй иди.
#303 #499725
Пацаны, подскажите ньюфагу, как использовать new для объявления указателя типа int()[5]? К примеру, я пишу:
[code]int (
ptrm)[5];
ptrm = new int(*)[5];[/code]
но компилятор не хочет, отказывается. Как быть? Вопрос чисто теоретический.
#304 #499730
>>499725
ptrm = new int*[5];
#305 #499740
>>499730
Пробовал. Переставлял скобки, как только мог. Всё равно подчёркивается знак равно. Когда навожу курсор, пишет, что int °° нельзя присваивать int (°) [5]. Ещё пробовал вот так: ptrm = new (int (°) [5]). В таком случае компилятор пишет, что int (°°) [5] нельзя присвоить int (°) [5].
#306 #499785
>>499740
А. Так, нельзя делать. Твой ptrm это кусок памяти на стеке, он не может стать указателем на кусок памяти в хипе. Но туда можно вписать новые данные с помощью placement new. https://ideone.com/jXv6pK
#307 #499807
>>499785
Что-то я не очень понял. А при чем там массив указателей? Наверно, стоит немного подробней расписать, что я хочу сделать.
[code]int (*ptrm)[5], m[5];
ptrm = &m;[/code]
Здесь я присваиваю адрес какого-то конкретного массива. То есть у меня получается указатель на весь массив, а не на первый элемент. А возможно ли операцией new сделать тоже самое? Это и у меня и не получается.
#308 #499820
>>499807
Хотя я тут подумал. При моём объявлении (°ptrm) будет эквивалентно m, то есть статическому массиву. Тогда логично, что его не получится инициализировать через new, но в то же время ptrm значения присваивать можно. Кажется, я понял. Складывается ощущение, что я сказал то же самое, что и (>>499785). Или я не прав?
#309 #499823
>>499820
Попробуй ptrm = (int (*)[5]) new (int[5])();
#310 #499833
>>499823
Работает. Хм. А что это вообще такое? Где про это почитать можно?
#311 #500066
>>499725
Долбоеб. int (*prtm) [5] это "prtm есть указатель на массив из пяти интов". А ты создаешь через new "указатель на указатель на массив из пяти интов".
#312 #500075
>>499807
Во-первых, ты желаешь странного, ибо имя массива эквивалентно не считая тонкостей константному адресу его первого элемента. То есть, ты получаешь как бы указатель на указатель на первый элемент, но нахуя? Эта прослойка не нужна. Во-вторых, объявление new для типа T схематично выглядит так: T operator new (). То есть, если ты выделяешь место массиву экземпляров T, то вернется указатель на его первый элемент, в твоем случае элементы массива сами являются указателями, то есть, это будет int . Но вспоминаем, что массив это по сути T const, то есть, единожды созданному ты уже не можешь присвоить новый адрес. И это логично, потому что ему на стеке выделяется место для пяти интов, и если потом вдруг массив станет смотреть не на них, то они утекут, а деструктор для массива не обязательно совместим с delete [], которым положено очищать массив, выделенный через new. >>499823 здесь использовано функциональное приведение, скорее всего, оно дойдет до reinterpret_cast и заменит адреса бездумно. Работать это может, но далеко не обязано, ибо неопределенное поведение. В третьих, >>499785 кун прав, в рамках ровно такой задачи лучше всего сделать так. Но это таки неестественная и извращенная хуйня, поэтому, в четвертых, используй контейнеры std::vector и умные указатели и не еби достопочтенным плюсогосподам мозги.
#313 #500076
>>500075
Звездочки просрались, ну и похуй.
#314 #500111
>>500066
this
и мы снова возвращаемся к теме о том ЧТО МАССИВ ЭТО НЕ УКАЗАТЕЛЬ БЛЯДЬ
#315 #500120
>>498612

С плюсами только знакомлюсь, хули
#316 #500196
>>500066
Сам ты долбоёб. Я ньюфаг. Мысль понял. Разницу почувствовал.

>>500075

>ты получаешь как бы указатель на указатель на первый элемент


Ну да, и хочу его инициализировать.

>но нахуя


Для себя. Чтобы понять суть работу всей этой хуйни.

>используй контейнеры std::vector и умные указатели


С радостью. Но всё же интересно копнуть немного поглубже. Хотя постепенно, я думаю, придёт понимание таких деталей.

То есть, как я понял, у меня не получится через new выделить память для указателя на пять интов?
[code]int (p)[5];
p = new (int(
)[5]); // не работает и нет способа заставить?
int (p)[5];
p = new (int(*)[5]); // работает[/code]
#317 #500645
Крестопетухи должны страдать.
99 Кб, 576x463
sage #318 #500675
#319 #500681
Как с ncurses передать color в качестве аргумента функции?
Или это будет в виде, если учитывать что в ncurses 8 цветов, в виде ебического case?

Хочу что-то написать функцию вида:

drawCharLikePixel (int x, int y, color_foreground, color_background)
{
^- это макросы, какой тип?
}
#320 #500699
>>500681
Читай документацию, одним постом не объяснишь.
#321 #500789
Привет, крестовики. Дело в том что надо накатить вижуал студио,которая IDE что бы для UE4 че-нить писать, но я нихуя не понял какой качать.Не подскажите? Будьте добры.
#322 #500798
Бля, я наверное имбицил, но почему ебаный zlib не хочеть разжимать ссаный vector?

[CODE lang="cpp"]
// Есть два ветора:
vector<uint8_t> compressedData; // Сжатые данные, размер известен
vector<uint8_t> uncompressedData; // Вектор для распакованных данных, размер после распаковки заранее известен

unsigned long uncompressedDataSize = 1234567; // Собственно вот и он
uncompressedData.reserve(uncompressedDataSize); // Выделяем память

uncompress(&uncompressedData[0], &uncompressedDataSize, &compressedData[0], compressedData.size()); // Пытаемся распаковать compressedData в uncompressedData
[/CODE]

И самое забавное в том, что до uncompress uncompressedData.capacity() показывает верный размер резерва, а вот после - уже нуль...
sage #323 #500810
>>500798
потому что reserve не всегда выделяет память. Используй либо resize(), либо конструктор с указанием размера vector<uint8_t> udata(size)
#324 #500811
>>500798
А что uncompress возвращает? Не ошибку. Попробуй к данным вектора получать доступ черед .data() твой способ возможно хуита, operator[] же метод, когда он возвращает нулевой елемент он скорее всего создает копию и ложит ее на стек, и беря адрес возвращаемого элемента ты берешь адрес временной переменной на стеке вызовов, а не адрес начала данных вектора.
#325 #500813
>>500810

> потому что reserve не всегда выделяет память. Используй либо resize(), либо конструктор с указанием размера vector<uint8_t> udata(size)


И правда, теперь uncompressedData полный нулей, лол.

>>500811

> А что uncompress возвращает? Не ошибку.


Точно, совсем забыл что он возвращает что-то.
Выдаёт Z_DATA_ERROR. Что с operator[], что с .data().
#326 #500832
>>500813
Посмотрел первые 2 байта в compressedData - 78 9C.
Таки там zlib с дефолтной компрессией, а то я уже начал было сомневаться...
#327 #500837
>>500832
Попробуй для теста выгрузи входной вектор в массив и отдай массив. Проблема с данными же. Входной вектор тоже черз data() передавал?
#328 #500841
Бляяя, пиздос...
Я заполнял вектор из файла с помощью istream_iterator, в итоге файл читался не до конца.
Починилось через .unsetf(ios::skipws)

>>500837
Теперь работает и через &vector[0] и через vector.data()
sage #329 #500854
>>500811
он возвращает ССЫЛКУ на нулевой элемент и никаких копий никогда не создает.
#330 #500978
>>500196
Ты не совсем понял видимо, няш. Нет понятия "указатель на пять интов". Есть "массив из пяти интов", он выделяется только на стеке (не в куче, не через new), а после выделения эквивалентен константному указателю на инт. Ты можешь с помощью new выделить место для указателя на указатель на инт, тогда в куче отведется место для единственного указателя (а не содержимого по его адресу), а тебе вернется указатель на эту область памяти, смекаешь? Потом ты можешь отдельно создать массив из пяти интов на стеке, а его адрес положить в то место в куче, типа:

[code lang="cpp"]
int array [5];
int ptr_to_ptr = new int ;
ptr_to_ptr = array;
[/code]

Теперь у тебя фактически ptr_to_ptr это указатель на массив из пяти интов, но его типом как был указатель на указатель на инт, так и остался. Такие дела.
#331 #500981
>>500789
Есть два стула. MSVS 2013 это последний оффициальный тм релиз, стабильный. Есть MSVS 2015 Release Candidate, по факту это то, что станет релизной версией MSVS 2015. Там много новых плюшек наподобие инструментов рефакторинга, но могут быть баги, хотя вряд ли. Естественно, тебе нужна 2013 версии Ultimate либо 2015 RC версии Enterprice.
#332 #501132
>>500978

>Есть "массив из пяти интов", он выделяется только на стеке (не в куче, не через new)


штобля? auto x = new int[10]; ← это что бля?

>Нет понятия "указатель на пять интов".


а не пиздишь? http://ideone.com/AB31yZ
#333 #501176
>>501132
1. Лолблядь. Ну подведи мышку-то к auto, и увидишь, какой там на самом деле тип. Повторюсь, понятие массива - это еще с C одна большая обертка над int const, который указывает на какой-то инт, за которым гарантируется последовательное размещение вплотную еще нескольких интов по числу элементов в "массиве". Обращение к ним по array [ctr] из той же серии, оно сразу преобразуется в разыменование array + ctr, это синтаксически эквивалентная конструкция, которая запилена для удобства школьников, пришедших с паскаля. Само понятие массива стандартом определено только для автоматических и глобальных переменных. new просто не умеет оперировать понятием "массив", она выделит место для пяти интов подряд и вернет указатель на первый. Этот указатель потом можно запихнуть в константый указатель, и после этого работа с ним не будет отличаться от работы с массивом, можно писать ptr [ctr] и все дела. Но это не будет массивом, тем не менее, потому что само определение массива предполагает автоматическое выделение памяти на стеке и инициализация указателя, который скрыт под оберткой массива, ее адресом. А поскольку он константный, ты уже не сможешь его сделать указывающим на что-то, выделенное в куче, даже если это несколько интов подряд.
2.
[code lang="cpp"]
class TvoyaMamka {};
TvoyaMamka
ptr;
[/code]

Видишь, у нас есть указатель на твою мамку. Но это не часть языка, а вновь описанная сущность, не имеющая никакого отношения ко встроенным типам данных. С typedef то же самое.
#334 #501179
>>501176
Расшатанное обезьяной говно, там же только одна звездочка была, епту. В первой строке int * const.
285 Кб, 500x227
#335 #501183
>>500978
[code lang="cpp"]
std::vector <int> vect;
vect.resize (5);
std::unique_ptr <int > ptr_to_ptr = std::make_unique <int > ();
*ptr_to_ptr = vect.data ();
[/code]
#336 #501259
>>501176

>понятие массива - это еще с C одна большая обертка


съебал нахуй, дебил блядь
массив это сущность, школьник сраный

>само определение массива предполагает автоматическое выделение памяти на стеке


блядь, мозг рака

а тебе дал пример выше дебилушка, http://ideone.com/AB31yZ

[code]
typedef int pyat_intov[5];
typedef pyat_intov* ukazatel_na_pyat_intov;

ukazatel_na_pyat_intov kakaya_to_peremennaya = new pyat_intov[4];
[/code]
какой тут стек, нахуй? что ты несешь вообще? вообще охуеть
93 Кб, 680x417
sage #337 #501462
Два дебила это сила.
5 Кб, 204x204
#338 #501541
Господа, пару месяцев изучаю Джаву. Но тут внезапно увидел у себя в мухосранске бесплатные курсы по C++ от одной фирмы. Но там есть требования к кандидату.

Записываясь на курсы, кандидат должен знать следующие темы C++:

- типы данных;
- переменные, области видимости;
- операторы «выражение», ветвления, цикла, передачи управления;
- массивы, указатели;
- функции, процедуры, формальные параметры;
- перечисления (enum);
- структуры (struct);
- классы (class).

Так вот вопрос. Если я эти 2 месяца учил Java Core и задрачивал квизы, то за сколько реально выучить все из этого списка по C++? Языки же вроде похожи.
sage #339 #501556
>>501541
За полчаса, если знаешь жабьи аналоги.
44 Кб, 641x762
#340 #501560
>>489539
Доброго времени суток!
В QT есть замечательный контейнер QSet, отвечающий за множества, и мне нужно научиться передавать эти контейнеры, как аргументы функций, и научить функции возвращать множества, как результат. Напрямую не получилось, теперь думаю работать с указателями.
Это вообще возможно, и если возможно, то как?
#341 #501561
>>501541
Час где-то. Ты там все должен знать кроме указателей и классов. Ну и перечисления там в джаве вроде другие немного.
#342 #501565
>>501560
Указатели. Передаешь, возвращаешь. Лучше конечно с сылками работать, но там куча нюансов. Сделай сейчас на указателях и разбирайся с ссылками - там конструкторы копирования, move семантика это все.
#343 #501568
>>501565
Понял, спасибо.
Сегодня ночью буду разбираться.
#344 #501577
Плюсаны, поясните, в какой программе вы пишите и компилируете исходный код?
#345 #501581
>>500978

>Нет понятия "указатель на пять интов"


Давай по порядку. int m[5] — это массив из пяти интов. m — указатель на первый элемент массива, то есть то же самое, что и &m[0]. А вот &m (ВНЕЗАПНО равный m) — это адрес всего массива и именно из из пяти элементов. Разница между ними будет проявляться при арифметике: m + 1 = &m[1], а &m + 1 = (по факту) &m[6]. А, ещё sizeof разные результаты будет возвращать.
запутали_ньюфага_окончательно
#346 #501582
>>501577
Microsoft Visual Studio Express 2013.
#347 #501588
>>501582

>Microsoft Visual Studio Express 2013


Почему именно эта?
#348 #501589
>>501259

>сущность


>обертка


Никакого противоречия же. Синтаксический сахар в чистом виде. Я даже не поленюсь открыть стандарт и накормить тебя хуями:

4.2.1 An lvalue or rvalue of type “array of N T” or “array of unknown bound of T” can be converted to a prvalue
of type “pointer to T”. The result is a pointer to the first element of the array.

8.3.4.6 Except where it has been declared for a class (13.5.5), the subscript operator [] is interpreted in such
a way that E1[E2] is identical to *((E1)+(E2)).

>пример


В твоем примере нет сущности "массив". И стека нет поэтому. Ты просто выделяешь место в куче для четырех последовательных объектов, они не будут массивом:

5.3.4.5 Note: both new int and new int[10] have type pointer to int.

А твой пример вообще не скомпилируется, дауненок, ты же пытаешься присвоить указатель на инт указателю на указатель на инт. Тайпдефы разжижают мозг, агагагаг.
#349 #501592
>>501462
Ну что ты, браток, все ж мы люди. Хочешь, расскажу, как я шаблонный класс писал? Написал-то я его быстро, минут десять всего. Ну а потом поебалися.
#350 #501595
>>501588
Потому что просто хобби. На сперму самое то.
#351 #501597
>>501577
Microsoft Visual Studio Ultimate 2013. Это как >>501582, но с профилировщиком и тестами.
#352 #501598
>>501597
>>501582
Кстати, они, вроде платные. Вы пиратки юзаете?
#353 #501601
>>501598
Express бесплатная.
#354 #501602
>>501601
Спасибо!
#355 #501603
>>501601
Я тут почитал, она, что ли, с браузера или как-то так работает?
#356 #501605
А нет, там 3 версии - веб, десктоп и виндовс.
Только я не понял чем десктоп от виндовс отличается.
#357 #501606
>>501589

>А твой пример вообще не скомпилируется, дауненок, ты же пытаешься присвоить указатель на инт указателю на указатель на инт.


дебилушка не может даже открыть ссылку или скомпилировать самостоятельно?

>can be converted


это переводится как "может быть преобразовано", даун ебучий

>В твоем примере нет сущности "массив".


а что такое за тип pyat_intov?

>Ты просто выделяешь место в куче для четырех последовательных объектов, они не будут массивом


это будет двумерным массив, сын идиотки

имбецил сраный, если у тебя char может быть сконверчен к int'у, то это не значит что это одинаковые типы

пошел вон из профессии, мудило
#358 #501607
>>501605
У меня десктоп. виндовс вроде для разработки на windows phone и маркет 8.1. Точно уже не помню.
#359 #501608
>>501259
если создалось что-то под названием массив, то это либо объект (тогда где его конструктор?) либо примитивный тип (тогда почему его нет в жестко регламентированном списке примитивных типов?) либо функция (без комментариев). какая-то хуевая у тебя концепция выходит - создалось непонятно что из нескольких чисел в куче, new вернул указатель на число, а ты кукарекаешь про какие-то массивы. говна наверни в общем, манька паскальная
#360 #501611
>>501607
Там обязательно иметь микрософт аккаунт? А то при загрузке меня на регистрацию кидает.
#361 #501613
>>501611
Вроде да.
#362 #501615
>>501613
Ты зарегистрировал на левый акк?
sage #363 #501620
>>501582
Visual Studio Community 2015 - бесплатная и со всеми фичами. Плюс еще и с++11 доработан.
#364 #501621
>>501608
сам наверни говна

3.9.2 Compound types
[basic.compound]
Compound types can be constructed in the following ways:
— arrays of objects of a given type, 8.3.4;
— functions, which have parameters of given types and return void or references or objects of a given
type, 8.3.5;
— pointers to void or objects or functions (including static members of classes) of a given type, 8.3.1;
— references to objects or functions of a given type, 8.3.2;
— classes containing a sequence of objects of various types (clause 9), a set of types, enumerations and
functions for manipulating these objects (9.3), and a set of restrictions on the access to these entities
(clause 11);
— unions, which are classes capable of containing objects of different types at different times, 9.5;
— enumerations, which comprise a set of named constant values. Each distinct enumeration constitutes a
different enumerated type, 7.2;
45)
— pointers to non-static
class members, which identify members of a given type within objects of a
given class, 8.3.3.

далее твой ротик я обрабатываю мочой из примеров из стандарта:

[code]
typedef int A[5], AA[2][3];
typedef const A CA; // type is ‘‘array of 5 const int’’
typedef const AA CAA; // type is ‘‘array of 2 array of 3 const int’’
[/code]
#364 #501621
>>501608
сам наверни говна

3.9.2 Compound types
[basic.compound]
Compound types can be constructed in the following ways:
— arrays of objects of a given type, 8.3.4;
— functions, which have parameters of given types and return void or references or objects of a given
type, 8.3.5;
— pointers to void or objects or functions (including static members of classes) of a given type, 8.3.1;
— references to objects or functions of a given type, 8.3.2;
— classes containing a sequence of objects of various types (clause 9), a set of types, enumerations and
functions for manipulating these objects (9.3), and a set of restrictions on the access to these entities
(clause 11);
— unions, which are classes capable of containing objects of different types at different times, 9.5;
— enumerations, which comprise a set of named constant values. Each distinct enumeration constitutes a
different enumerated type, 7.2;
45)
— pointers to non-static
class members, which identify members of a given type within objects of a
given class, 8.3.3.

далее твой ротик я обрабатываю мочой из примеров из стандарта:

[code]
typedef int A[5], AA[2][3];
typedef const A CA; // type is ‘‘array of 5 const int’’
typedef const AA CAA; // type is ‘‘array of 2 array of 3 const int’’
[/code]
#365 #501622
>>501615
Да думаешь я помню. Вообще, вроде нет, ибо у меня тогда была учётка для Windows Phone.
#366 #501629
>>501577
Пишу в виме, компилю в gcc или clang в зависимости от того, на какой платформе пишу.
#367 #501630
>>501606

>дебилушка не может даже открыть ссылку или скомпилировать самостоятельно?


>ты че сука охуел штоле какие еще предупреждения компилятора отключи их нахуй че как ссыкло епту


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

>может быть преобразовано


Именно. И еще второй абзац. В сумме это дает как раз понятие "обертка". Для долбоебов - "А есть обертка В" ~ "над В допустимы все операции, допустимые над А, и при трансляции А реализуется при помощи В".

>это будет двумерным массив


Кое-то не знает разницы между многомерными массивами и неровными массивами, лол.

>это не значит что это одинаковые типы


Чар конвертится неявно в инт => везде чар может использоваться вместо инта.
Массив конвертится неявно в указатель => везде массив может использоваться вместо указателя.
Оба утверждения повторяют первую часть определения обертки. Я не понимаю, лалка, ты нахуя берешь очевидные вещи, сдабриваешь их руганью и пытаешься сделать вид, что они доказывают что-то противоположное?
#368 #501631
>>501598
У меня Dreamspark.
#369 #501633
>>501620
Так что лучше-то?
#370 #501634
>>501633
Ставь 2015. Я бы тоже поставил, но пока не до этого.
sage #371 #501636
>>501633
Нет ничего лучше или хуже, дело вкуса. Попробуй Visual Studio 2015, не понравится — ищи другую IDE.
#372 #501640
>>501621

>составные типы


>примитивные типы


почувствуй разницу, щенок. и ты за мифические массивы в куче не ответил. new возвращает по ним указатель, где же твой б-г?
#373 #501641
>>501620
А кто-нибудь в курсе, кстати, когда релиз у нее? Не хочу ставить RC, потом сносить еще придется лишний раз.
#374 #501642
>>501630

>>ты че сука охуел штоле какие еще предупреждения компилятора отключи их нахуй че как ссыкло епту


быстро взял и показал где там ворнинги

>Ну, если так рассуждать, то все указатели одинаковые, раз компилятор их может привести друг к другу


ты дебил? implicit conversion для указателей нет

>при трансляции А реализуется при помощи В


господи, что за хуйню я читаю?

>Кое-то не знает разницы между многомерными массивами и неровными массивами, лол.


ты?

>Чар конвертится неявно в инт => везде чар может использоваться вместо инта.


съебал из профессии, быдло. переполнениями обмазываться будешь, когда тебя никто не видит, мразь

>везде массив может использоваться вместо указателя


ой блять, у тебя рак
#375 #501643
>>501629
Ем говно, испражняюсь дерьмом или мочой в зависимости от того, с какой стороны.
#376 #501652
>>501565
Так, окей, а как работать с указателями на контейнеры? Как динамически выделять для них память?
#377 #501653
>>501640

>и ты за мифические массивы в куче не ответил


не ебись в глаза, школомразь: http://ideone.com/AB31yZ
или ты так и будешь орать ВРЁТИИИ?
9 Кб, 402x205
#378 #501656
Что мне потом понадобится?
#379 #501658
>>501656
Это знает только Аллах, у него и спрашивай.
#380 #501660
>>501652
QSet* set = new QSet();
#381 #501661
>>501658
Ну, я начинающий С++ программист, пока читаю книгу...
#382 #501666
>>501660
Но ведь надо указывать, какого типа будет множество. Т.е.
QSet<QString> *set = new QSet<QString>()?
10 Кб, 1070x224
519 Кб, 1872x2676
#383 #501668
>>501642

>переполнениями обмазываться будешь


Покажи мне метод, который принимает int, но не может принять char без переполнения.

>implicit conversion для указателей нет


>сарказм? какой сарказм?


Я это и имел в виду, дурачок. Неявно не преобразуются, вот предупреждения (пикрелейтед 1).

>ты?


К несчастью для тебя, нет.

>господи, что за хуйню я читаю?


Рекомендую пикрелейтед 2.
sage #384 #501671
>>501656
Ничего из этого. Серьезно. Я еще удаляю половину дерьма что он по умолчанию ставит.
#385 #501676
>>501671
Даже фаундейшн С++ классы? Мне кажется что они важны.
#386 #501679
>>501661
Если места много, ставь всё. Потом сам разберёшься, что нужно, а что нет.
#387 #501682
>>501668

>Покажи мне метод, который принимает int, но не может принять char без переполнения.


>везде чар может использоваться вместо инта


ты болен мозгом рака?

>Неявно не преобразуются, вот предупреждения (пикрелейтед 1).


спермовор не человек. пользуйся нормальными компиляторами, а не индусскими отбросами

>Рекомендую пикрелейтед 2.


мудачок, тогда все языки программирования суть синтаксический сахар над байтиками.
а вопрос изначально был об отсутствии идентичности (с точки зрения плюсом) между массивами и указателями
обтекай короче
4 Кб, 503x135
#388 #501686
>>501653
Какой же ты тупой, блядь. Господи, спаси грешную душу этого убогого, ибо он не ведает хуйни, которую несет.

Ладно, давай по-другому. Ты считаешь, что в твоем примере kakaya_to_peremennaya указывает на мифический "массив в куче"? Да? А вот компилятор улыбается и кладет хуй тебе на лобешник. Гляди сюда, болезный, видишь, какой тип после разыменования? Массивом и не пахнет.
#389 #501688
>>501666
И еще, как множество выводить? Стандартный способ, как в документации, т.е.
QString buf // строка для вывода множества;
QSet<QString> str = new QStr<QString>;
QSetIterator<QWidget
> i(str);
while (i.hasNext()) buf << i.next();

Грит

ошибка: no matching function for call to 'QSetIterator<QWidget
>::QSetIterator(QSet<QString>&)'
QSetIterator<QWidget > i(str);
^
#390 #501691
>>501688
str, естественно, указатель.
#391 #501694
>>501682
на это что скажешь? >>501686
мимокрок
не думал, что в крестотреде такая жара
#392 #501699
>>501656
GitHub я бы поставил, хотя из консоли тоже удобно. Остальное хуета на мой взгляд.
#393 #501701
>>501686

>Какой же ты тупой, блядь. Господи, спаси грешную душу этого убогого, ибо он не ведает хуйни, которую несет.


себя отпевай, хрюс

>Гляди сюда, болезный, видишь, какой тип после разыменования? Массивом и не пахнет.


и ты опять насрал себе в штаны, показав implicit conversion между массивами и указателями: http://ideone.com/NKsY1X

>А вот компилятор улыбается


на пике IDE, даунит спермоворный
#394 #501776
>>501701

>на пике IDE


Если ты думаешь, что после раскрытия auto непосредственно компилятором там будет что-то другое, то у меня для тебя плохие новости.

>и ты опять насрал себе в штаны


Ты полтреда сидишь на большой куче говна внутри кальсон и визжишь, что все вокруг соснули, хотя сам же запилил пример, который выводит int and x is 1 и показывает твой эпичнейший обосрамс.

>implicit conversion между массивами и указателями


Воистину, это так, я об этом говорил еще здесь >>501589, ебанько ты пиздоглазое. Не преобразуются твои говнотайпдефы только. И к твоему примеру отношения не имеет. char y; auto x =
y каким типом x сделает? Правильно, упоротый кусок говна, это будет char ! Знаешь почему char, а не int, не double, не твоя мамаша-шлюха, описанная с соответствующим конструктором из char? Потому что похуй, к чему char неявно приводится, auto поставит настоящий тип. В твоем примере то же самое, имбицил, и способность массивов приводиться к указателям не играет никакой роли. x указатель на инт не потому что к нему что-то неявно привелось, а потому что kakaya_to_peremernnaya и есть указатель на инт, блядь. Какой же ты даун, если этого не понимаешь даже с таким подробным объяснением, просто пиздец. Возможно, тебе стоит временно прикрыть этот невыносимый поток хуеты, прочесть хотя бы какой-нибудь крестоучебник а-ля "кресты для нюфань за 21 день", или перейти на язык с динамической типизацией, если не можешь осилить элементарные вещи, ну или просто СЪЕБАТЬ и не смешить людей своим кукареканьем в серьезном треде.
#395 #501784
>>501581
Все верно. Там есть нюансы касательно sizeof (). Если хочешь, можешь почитать стандарт, там нормально описано. Если вкратце - после первой же операции или присваивания чему-то еще размер станет неизвестным. Это происходит потому что размер массива - характеристика имени, а не адреса. А поскольку массивы не присваиваются напрямую, можно сохранять размер при ручном копировании в новый массив только объявляя его как T new_arr [sizeof (old_arr)] или что-то подобное делать.
#396 #501786
>>501652
Используя ссылки и не выебывайся
#397 #501796
>>501776

>говнотайпдефы


ну пизда ты сейчас огребаешь
если ты не понимаешь типизацию в плюсах, то пиздуй в детский сад, мразь. именно там рассказывают про типы, implicit/explicit приведения и прочие важные вещи

>auto x = y каким типом x сделает?


согласно ПРАВИЛАМ TEMPLATE ARGUMENT TYPE DEDUCTION, имбицил позорный

>auto поставит настоящий тип


сэр пидор ебаный не знает даже про decltype(auto), гнида ты подшконочная?

>потому что ∗kakaya_to_peremernnaya и есть указатель на инт, блядь.


пидор гнойный, это lvalue reference, ты не можешь поменять адрес здесь, гнида паскудная
ты хотя бы сначала код смотрел, потом думал, а потом постил свои ничтожные высеры. там же блядь напрямую через std::is_same сравнение делается, глазоёб сраный

>Возможно, тебе стоит временно прикрыть этот невыносимый поток хуеты, прочесть хотя бы какой-нибудь крестоучебник а-ля "кресты для нюфань за 21 день", или перейти на язык с динамической типизацией, если не можешь осилить элементарные вещи, ну или просто СЪЕБАТЬ и не смешить людей своим кукареканьем в серьезном треде.


ТЫ УЖЕ ДОКАЗАЛ СВОЁ ЕБУЧЕЕ НЕЗНАНИЕ ОСНОВ, ПИТОНИСТ СРАНЫЕ
СЪЕБАЛ НА СВОЮ ДЖАНГУ-ХУЯНГУ, ОТБРОС ДИНАМИЧЕСКИЙ, ПОХАПИСТ АССОЦИАТИВНЫЙ!
#398 #501807
>>501786
Хорошо, не буду выебываться.
При использовании ссылок какие тонкости есть?
#399 #501844
>>501807
А вот какие тонкости есть, епт.
Я QSet<QString> str создавал, как поле класса MainWindow, чтобы к нему и обращаться со всех кнопок на форме, причем когда создаю указатель на контейнер, то все ок, собирается, а когда создаю сам объект, то говорит, что неверный тип.
sage #400 #501917
>>501844
Тебе рано использовать библиотеки и фреймворки, выучи основы языка сначала.
#401 #501941
>>501807
Нельзя изменить значение ссылки, сам объект можно. Но старайся использовать const везде где сможешь.
#402 #501944
Зачем нужны STL итераторы?
#403 #501961
>>501944
Для унифицированного доступа к stl контейнерам. Скрывают детали реализации доступа к элементам.
16 Кб, 952x348
#404 #502114
Поясните, как компилировать и запускать код в вашем вижуале?
Написал простенький код из книги, обсмотрел программу, не нашёл компиляции.
Есть какое-то непонятное присоединение.
#405 #502121
>>502114
При чем, есть какая-то странная компиляция - ктрл + Ф7, но программа выдает непредвиденные ошибки.
#406 #502132
>>502114
Я вижуалом в общем-то не пользуюсь, но:
Судя по всему, ты просто создал файл cpp, а должен создать проект. Тогда
файл -> создать проект -> С++ - пустой проект -> обозреватель решений -> "файлы исходного кода" -> создать элемент -> Файл c++
Там пишешь свой код. Должно заработать.
#407 #502135
>>502132
Cпасибо.
А чем файл от проекта отличается?
Вроде и там и там .сср файлик и всё. Хотя, в проекте, вроде, еще шапка есть.
#408 #502170
>>502135
Проект это, грубо говоря, список файлов + настройки для сборки этих файлов.
#409 #502357
>>489539

> Тег [code] работает через жабаскрипт-костыль: https://github.com/ololoepepe/MakabaCode


У меня одного он не работает?
#410 #502394
Почему никто не делает нормальную шапку?
#411 #502400
Кто работает в вижуале - поясните, у меня есть 2 файла с кодом, как сделать так, чтобы выполнялся только 1 из них?
Вот: Source2 и Source.
#413 #502409
>>502401
Переименовать функцию main
#414 #502412
>>502409
Запускается, но, только странно: запускается код с окна Source, а не Source2.
Как я понял они одновременно выполняются?
#415 #502415
>>502400
Функция main должна быть только одна.
#416 #502418
>>502415
Да, я поменял функцию, но если я запускаю - выполняется только source, который я 1 написал и сохранил. А сурс2 выполняется только если я всё удалю в сурс1.
#417 #502476
>>502418
>>502400
Бамп вопросам!
sage #418 #502506
>>502476
Один проект — одна программа.
#419 #502584
>>501786
А вот хрен я что придумал нормального с сылками.
Зато сделал с указателями неплохой рабочий вариант.
В описани формы указатель на множество, все кнопки принимают этот указатель и возращают его же, и отлично все собралось и работало.
Говнокод конечно форму засорять лишними данными, но это лаба, так что похуй.

А вот на что не похуй, так это как с формой связать логику программы в, скажем, main?
Вот есть данные в main, и есть отдельная форма с исходниками и отдельным ui, так как научить форму обращаться к данным в main и наоборот?
#420 #502624
>>502584
Ссылка это разыменованный указатель. Если не нужен нулевой указатель, можно легко менять на ссылку. А тебе надо почитать хотя бы c++ за 21 день. Или шилдта. И учебник по кутэ, на сайте есть достаточно туториалов.
#421 #502717
>>502584
Пиздец, я дожил до того дня, когда школьники спрашивают про логику уже после создания ФОРМОЧЕК.
миморисовал окна попиксельно в TurboPascal под DOS в твоем возрасте
#422 #502732
Чёрт! Кажется, я прострелил себе ногу...
#423 #502777
>>502584
Передаешь ссылки/указатели на структуры данных из main при создании формы или потом в методах. Почитай про MVC.
#424 #502783
>>502777
Он теперь сюда придёт всякую херню про мвц спрашивать
#425 #502907
(В очередной раз наткнулся в интернетах на срач, в очередной раз не очень понимаю его источник, решил спросить на бордах)

Поясните мне по хардкору сакральный смысл private и protected. В смысле - нахуя они всё же нужны на практике? Хипстерота в инторнетах упорно твердит подхваченные откуда-то выражения в стиле "public variables = bad programming practice", ничем эти слова не подкрепляя. А у меня в рабочем коде высоконагруженного приложения на сотню тысяч строк ни разу не встречаются эти два слова. Слово class тоже не встречается, если что. Всё делаю через struct, все переменные публичные - и всё работает заебись, держит ~20000 одновременно подключенных клиентов, не течёт, не сбоит.
А мне говорят - bad programming practice. Соответственно в очередной раз возникает вопрос - а нахуя всё же, если без них работает лучше?
sage #426 #502914
>>502907
Дело не в том, как хорошо это работает, а в том, как потом такую систему расширять и дорабатывать. Если архитектура прозрачна для чтения — любая макака поймет что твой код делает. Если ты на с++ все хуячишь в си-стайле, то тут уже попахивает чем-то нездоровым.
#427 #502920
>>502914
Да с ахритектурой вроде всё нормально и понятно, расширяли и дорабатывали не раз уже. Для себя же пишем, нам проблемы с говнокодом не нужны.
Я просто никогда не понимал этой блядской практики делать переменную закрытой и писать отдельные функции для того, чтобы писать и читать в неё. Компиляторы цпп не предполагают обычно, что программист идиот, и честно ставят лишние JMP. А если у тебя пара миллионов обращений к такой переменной за цикл? Алсо оптимизация работы с завуалированными таким образом даннми идёт по пизде обычно.
#428 #502924
>>502920

>Компиляторы цпп не предполагают обычно, что программист идиот


Функция вроде геттера будет 100% заинлайнена, с точки производительности разница небольшая.
sage #429 #502925
>>502920
Ну вообще говоря использовать геттеры и сеттеры чисто для изменения одной переменной это долбоебизм. Есть класс, в нем есть методы, которые изменяют его внутреннее состояние. Если программист работает с классом как со структурой, но через геттеры-сеттеры, то смело можно сказать что его архитектура говно.
#430 #502932
>>502925
Я вообще смысл геттеров-сеттеров не понимаю, если честно. Это же лишние сущности в любом раскладе.
#431 #502937
>>502932
Школьник никогда не видел геттеров/сеттеров с логикой?
#432 #502947
>>502937
А дебил не понимает, что я говорю про вариант без логики?
#433 #502957
>>502932

>Это же лишние сущности в любом раскладе


Как ты сделаешь поле доступным только для чтения, например?
#434 #502962
>>502924
Кстати нихуя. Для интереса решил проверить, накатал простенький пример, включил оптимизацию в дебажном билде, и на выходе получил:

\t\t\tTestDurr.setHurr(123);
007191BB push 7Bh
007191BD lea ecx,[ebp-350h]
007191C3 call durr::setHurr (5700B0h)

>>502957

>Как ты сделаешь поле доступным только для чтения, например?


А зачем мне его делать доступным только для чтения, например?
#435 #502967
>>502962

>А зачем мне его делать доступным только для чтения


Потому что так диктует логика программы
#436 #502984
>>502967
Ни разу не сталкивался с такой логикой.
Можно реальный пример из жизни? Я не с целью поставить под сомнение или потроллить, мне просто интересна ситуация, в которой может понадобиться применение private и protected. В моей практике таких ситуаций не возникало ни разу.
sage #438 #503005
>>502984
Ну вот например есть у тебя коллекция, вроде std::map. У нее есть поле size, которое содержит количество элементов. Поле меняется только за счет удаления и добавления элементов и пользователю нельзя давать возможность изменять его напрямую, поэтому оно приватное и для него есть только геттер. Это поле содержит состояние объекта класса, но не должно быть доступно для прямого изменения.
#439 #503006
>>502962
Специально проверил, у меня все инлайнит в релизе. Более того, он у меня еще и конструктор std::string заинлайнил. Советую сменить компилятор, все-таки 2015 на дворе.

>>502962

>А зачем мне его делать доступным только для чтения, например?


Ну если у тебя вся программа из структур с публичными полями, то действительно смысла нет. Пример где это оправдано - это например vector::size. Переменная которая хратит количество элементов вектора недоступна на чтение из клиентского кода.

>public variables = bad programming practice


Половина из них даже сформулировать внятно не может чем именно плохо: "Господин сказал что нельзя, значит нельзя. Но если сделать к ним доступ через геттеры/сеттеры то это отгонит злых духов". Глупые мартышки, что с них взять.
#440 #503018
>>503005

>std::map


Дальше не читал. Не пользуюсь этим говном, и вам не советую.
>>503006

>vector


аналогично

>Советую сменить компилятор, все-таки 2015 на дворе.


Я бы с удовольствием, если честно, но мы вынуждены поддерживать обратную совместимость с WinXP, что ограничивает выбор компиляторов и версии используемых библиотек.
sage #441 #503020
>>503018

>Не пользуюсь этим говном


Никто тебя и не заставляет. Ты просил примеры, тебе пояснили. Если захочешь еще раз поспорить о вкусах — можешь лучше сразу пойти нахуй.
#442 #503026
>>503020
Мне ничего не пояснили. Я спросил про практическое применение, мне ответили "ну, типа, в говнобиблиотеках нельзя так делать, потому что нельзя". Это ответ, по-вашему?
sage #443 #503031
>>503026
Блять, я тебе руским по твоей цветовой схеме написал

>поле содержит состояние объекта класса, но не должно быть доступно для прямого изменения.


Если у тебя другие подходы к программированию, то нехуй тут флейм разводить и высказывать свои никому не интересные мнения по поводу качества библиотек.
#444 #503033

>ну, типа, в говнобиблиотеках нельзя так делать, потому что нельзя


Тебе все конструктивно пояснили, а ты продолжаешь переписку в стиле

>кококо я вас не понял

#445 #503044
>>503018

>Не пользуюсь этим говном, и вам не советую.


Хотелось бы услышать почему.

>>503026

>Мне ничего не пояснили.


Просто ты тупой чтобы понять.
#446 #503068
>>503006

>public variables = bad programming practice


Половина из них даже сформулировать внятно не может чем именно плохо: "Господин сказал что нельзя, значит нельзя. Но если сделать к ним доступ через геттеры/сеттеры то это отгонит злых духов". Глупые мартышки, что с них взять.
Вообщем ты прав. Все эти паблики, протектеды и пр. типо защита от тупых кодеров, которые получают готовый класс, но не знают как им пользоваться. Правда это нихуя не работает, но полоумные ООП-шники все равно придумавают правила по которым надо расставлять приваты или проектеды, формулируют ебанутые бэд практики прочую хуйню.

>Так так, шо тут у нас, мне надо поменять координаты вот этого объекта... Такс паблик метод SetCoordinates - нет, это хуйня какая-то... Вот есть же свойства int x, int y! Бинго! Чего, компилятор ругается что они протектед. Щас пабликом их сделаю, быдлокодер тут до меня сидел какой-то, не разбирается нихуя. Воо! Ништяк компильнулось теперь, ну все на продуктвив.



>Ну если у тебя вся программа из структур с публичными полями


Ну сделаю я поля защищенными. И что? Алгоритм станет работать так как нужно? Исчезнет утечка памяти? Производительность вырастет?
>>503044

>Не пользуюсь этим говном, и вам не советую.


>Хотелось бы услышать почему.


Чего непонятного?

>std:: = bad programming practice


Я конструктивно объяснил?
#447 #503074
>>503068

>>Ну если у тебя вся программа из структур с публичными полями


>Ну сделаю я поля защищенными. И что? Алгоритм станет работать так как нужно? Исчезнет утечка памяти? Производительность вырастет?


Если убрать «protected», т.е. видимые дочерним классам, то уменьшиться время на внесение изменений в основной класс из-за кошмара зависимостей в дочерних классах. Курсив загугли и вообще дальше сама.
#448 #503082
>>503074

>видимые дочерним классам


Про френдов забыл?

>то уменьшиться время на внесение изменений


Главное почаще повторять эту мантру

>из-за кошмара зависимостей


Сами придумаем себе проблемы и сами же будем героически их превознемогать. Зато ООП, епта.
sage #449 #503100
>>503068

>Я конструктивно объяснил?


Ясно все с тобой, хейтерок. Иди зелени в другое место. Не кормите его больше.
#450 #503102
>>503068

> Ну сделаю я поля защищенными. И что? Алгоритм станет работать так как нужно


Только на дваче: дети не знающие ООП и наверняка не учившиеся ни разу в жизни на CS обсуждают ООП.

Поля надо делать защищенными по одной простой причине. Потому что в этом случае доступ к ним контролирует сам объект. Чтобы разобраться кто туда записал не то значение (или поставить проверку, или что-то сделать с этим значением или что-то сделать при его изменении), тебе достаточно поставить проверку в одном-двух местах в классе. А с публичным свойством обращаться к нему может любая из ста тысяч строк в твоем приложении и тебе надо обходить их все и проверять. Это называется инкапсуляция и она нужна для уменьшения сложности огромного по объекму кода, а любое современное приложение огромное по объему.

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

Условно говоря приватное поле это как подъезд с охраной и пропусками, а публичное это открытый всем желающим.

> Исчезнет утечка памяти? Производительность вырастет?


Будет меньше багов и потраченного времени, проще поддерживать код.

> если у тебя вся программа из структур с публичными полями


то с большой вероятностью это кусок быдлокода так как ООП удобнее и мощнее.

Алсо сишник который не использует std по моему просто дебил который его не может осилить и изобретает свои велосипеды.
#451 #503104
>>503068
[code lang="cpp"]
//x = abse^(iarg)
struct Complex
{
\tdouble abs;
\tdouble arg;
\t
\t//...
};

//Везде в коде, где ты хочешь использовать модуль числа, пишешь в духе:
tvoya_mamka.useAbs (number.abs);

//ВНЕЗАПНО за час до дедлайна оказывается, что большие по модулю числа
//не влезают в твою структуру, и все крашится. Ты вынужден изменить реализацию
//на, например, такую:

//x = real + iimaginary;
struct Complex
{
\tdouble real;
\tdouble imaginary;
\t
\tdouble getAbs ()
\t{
\t\treturn sqrt (real
real + imaginary * imaginary);
\t}
};

//Теперь ты по всему коду (а у тебя его миллион строк, не забываем) хуяришь
//замены number.abs на number.getAbs (). Если буквосочетание abs используется
//не только в этой структуре, то тебя ждут увлекательнейшие часы ручного отбора
//нужных мест для замены или написание/поиск хитрожопого скрипта для этого,
//ну ты понел. Дедлайн сорван, господин недоволен глупым рабом, который не любит
//аксессоры. А с их использованием все бы вылилось в изменение одной строчки
//и перекомпиляцию одного исходника:

class Complex
{
\tdouble abs;
\tdouble arg;
\t
public:
\t
\tdouble getAbs ()
\t{
\t\treturn abs;
\t}
};

//"Нужно сразу продумывать архитектуру правильно!" - раздался истошный крик со стороны
//загона для джуниоров. Но тимлид не обратил на эти крики никакого внимания. Ньюфаг
//не человек, и сегодня ему предстоит очень трудная ночь. На протяжение всего проекта
//каждая ночь последнего дня спринта будет у него трудной, и через полгода его интеллект
//будет разработан настолько, что без труда сможет вместить 23 паттерна проектирования.
[/code]
#451 #503104
>>503068
[code lang="cpp"]
//x = abse^(iarg)
struct Complex
{
\tdouble abs;
\tdouble arg;
\t
\t//...
};

//Везде в коде, где ты хочешь использовать модуль числа, пишешь в духе:
tvoya_mamka.useAbs (number.abs);

//ВНЕЗАПНО за час до дедлайна оказывается, что большие по модулю числа
//не влезают в твою структуру, и все крашится. Ты вынужден изменить реализацию
//на, например, такую:

//x = real + iimaginary;
struct Complex
{
\tdouble real;
\tdouble imaginary;
\t
\tdouble getAbs ()
\t{
\t\treturn sqrt (real
real + imaginary * imaginary);
\t}
};

//Теперь ты по всему коду (а у тебя его миллион строк, не забываем) хуяришь
//замены number.abs на number.getAbs (). Если буквосочетание abs используется
//не только в этой структуре, то тебя ждут увлекательнейшие часы ручного отбора
//нужных мест для замены или написание/поиск хитрожопого скрипта для этого,
//ну ты понел. Дедлайн сорван, господин недоволен глупым рабом, который не любит
//аксессоры. А с их использованием все бы вылилось в изменение одной строчки
//и перекомпиляцию одного исходника:

class Complex
{
\tdouble abs;
\tdouble arg;
\t
public:
\t
\tdouble getAbs ()
\t{
\t\treturn abs;
\t}
};

//"Нужно сразу продумывать архитектуру правильно!" - раздался истошный крик со стороны
//загона для джуниоров. Но тимлид не обратил на эти крики никакого внимания. Ньюфаг
//не человек, и сегодня ему предстоит очень трудная ночь. На протяжение всего проекта
//каждая ночь последнего дня спринта будет у него трудной, и через полгода его интеллект
//будет разработан настолько, что без труда сможет вместить 23 паттерна проектирования.
[/code]
#452 #503105
>>503068

> защита от тупых кодеров,


То есть понятный самодокументируемый код для тупых кодеров, а умники предпочитают разбираться в лапше из структур и гдобальных функций?
#453 #503106
>>503100
Я иронизировал, относительно вот этого поста
>>503033

>Тебе все конструктивно пояснили,


Но тебе чуство иронии видимо не знакомно, все всерьез воспринимаешь.
Что не отменят того факта, что С++ - всего лишь неудачная ООП надстройка над божественным pure C.
sage #454 #503112
>>503106

>над божественным pure C


Еще один фанатик, не понимающий что под разные задачи нужны разные инструменты. Иди уже создай pure C тред и сиди там один сколько влезет. Нет, надо сюда приходить и заниматься проповедями "неверным"
#455 #503118
>>503102

>Поля надо делать защищенными


Спасибо кэп, но зачем ты мне это все объясняешь? Да еще буквально цитатами с вики.

>для уменьшения сложности


Придумаем себе сложности и будем героически их превознемогать.

>экономить деньги на разработку.


Нанимая высококвалифицированных гуру-ООП, которые потребуют хорошую зарпалтку? Отличный план.

>Будет меньше багов и потраченного времени, проще поддерживать код.


Опять мантры.

>Алсо сишник который


Алсо %langname% который не использует %libname% по моему просто дебил который его не может осилить и изобретает свои велосипеды.
#456 #503122
>>503118
Я очень надеюсь, что ты пишешь что-то околокриптографическое. Использование собственных велосипедов там петушками потом очень облегчает работу мне.
мимохакор
#457 #503124
>>503118

>>для уменьшения сложности


> Придумаем себе сложности


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

> Нанимая высококвалифицированных гуру-ООП, которые потребуют хорошую зарпалтку?


Которые в отличие от сишника способны реализовать систему, которая принест прибыль которой с лихвой хватит на оплату труда специалистов.
#458 #503125
>>503112

>Еще один фанатик, не понимающий что под разные задачи нужны разные инструменты.


Это ты ООП-шникам объясняй, которые в абослютно любой задаче пытаются нагородить классы.
#459 #503134
>>503106

>С++ - всего лишь неудачная ООП надстройка над божественным pure C.


Прохладно, если из С++ выкинуть ООП, он все равно чистому С на клык даст
Потому что шаблоны, RAII
#460 #503135
>>503124
Ну на самом деле истина где-то посередине. Не всегда проект является стартапом из молодых-шутливых сениоров. Нанимать в рамках большой корпорации только толковых - экономически невыгодно, обычно их ставят только на критичные участки и как начальников над группками дешевых макак. Долбоебы вроде вопрошающего напишут говно, но от интерфейса, например, большего и не требуется. Старший разработчик ебет их за совсем вопиющие косяки и ставит жесткие рамки, а платить много нужно ему одному, а не всей группе. Другое дело, что макаки - единственные, кто проигрывает от такого расклада, скучно же, и без перспектив и денег. Так что, по идее этот кукаретик должен наоборот искать способ развиваться, а не защищать манямирок, лол.
#461 #503136
>>503124

>Ну иди объясни заказчику


Регулярно общаюсь, и с IT, и с Бизнесом, с Техблоком. Им глубоко похуй.

>способны реализовать систему, которая принест прибыль


Опять мантры
Вообще, я не против ООП и в частности С++. С++ отлично решает ограниченный круг задач, это бесспорно. Но это далеко не панацея. И основые проблемы С++ от того, что его используют для решения задач, для которых он не предназначен.
#462 #503138
>>503134

>потому что шаблоны, исключения, лямбды, stl...


Пофиксил тебя.
#463 #503139
>>503134

>шаблоны


Ок, согласен

>RAII


Нахуй.
#464 #503142
>>503136

>иди объясни заказчику что ему нужно не полноценное приложение для управления отношениями с клиентами, а консольная программа вычисления чисел Фибоначчи


>Им глубоко похуй



Здравствуйте, я представитель Otkat Software inc. Мы крайне заинтересованы видеть вас своим сотрудником.
#465 #503144
>>503139
Отказываешься от RAII => отказываешься от исключений практически во всех случаях. Enjoy your
[code lang="cpp"]
switch (makeAction ())
{
case ERROR1: processError1 (); break;
//...
}
[/code]
#466 #503149
>>503135

>искать способ развиваться, а не защищать манямирок, лол.


Мне уже давно все равно какой язык\парадигму использовать. Подбираю под конкретную задачу. Поэтому могу позволить себе сравнение. Ну да, возможно с некоторым субъектевизмом, каюсь, грешен. Не обижайтесь, норм язык, просто не стоит его оголтело использовать.
>>503138

>исключения


Ок.

>лямбды, stl


Сахар и либы. Дело вкуса.
494 Кб, 500x204
#467 #503151
Посоны, ну очевидная зелень же. Этот хуесос ответы по существу >>503104 >>503105 >>503122, где ему поясняют, игнорирует, а про мантры кукарекает что-то с постоянством этой самой мантры.
#468 #503153
>>503134
C++ без ООП называется Clay и он дает на клык не только С, но и С++. Жалко, проект умер.
#469 #503154
>>503153

>проект умер


Это единственный показатель качества языка в итоге, лол.
#470 #503156
>>503142
Ну извини, не так выразился. Им похуй на ООП-пробелмы вендора. Главное чтобы функционал работал как нужно.
#471 #503159
>>503156
Это так. Но не выгоднее ли соблюдать небольшое количество правил, чтобы сделать разработку быстрее и проще в разы? Получить те же деньги, затратив меньше усилий.
#472 #503160
>>503151
Отвечу чуть попозжей, если тебе это так критично. Там рефакторинг, использование либ, и самодокументироаный код. Конечно С++ все эти проблемы\задачи решает, ага.
#473 #503165
>>503154
С чего вдруг? У него довольно хуевая лицензия, например, это причина поважнее. А так автор запилил его для себя и пользуется им. А С++ без очень больших бабок не переплюнешь.
#474 #503182
А может в шапке будет ссылка на годный учебник?
#475 #503185
>>503182
Я создам следующий тхреад, там все будет.
#476 #503186
>>503185
лимит 500?
#477 #503188
>>503185
А вообще есть ли учебники по С++ или только по С?
#478 #503195
>>503188
http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list

Чего нет - так это годных курсов.
#479 #503209
>>503195
Жалко, что я не могу в английский
#480 #503212
>>503209
На %X% есть время, а на английский якобы нет. Соу типикал.
#481 #503213
Я тот еблан с парсером SWF.
Наткнулся я тут на гитхабопомойке на мёртвенький аналогичный проект и кое-что меня там заинтересовало - https://github.com/djcsdy/swfmill
А именно: https://github.com/djcsdy/swfmill/blob/master/src/SWFTag.h и его родитель https://github.com/djcsdy/swfmill/blob/master/src/SWFIdItem.h
В базовом классе (Tag) для всех остальных тегов есть статичная ф-я get(...), которая читает айдишник тега из буфера и дёргает другую статичную ф-ю из родителя-фабрики(?).
В итоге, как я понял, её использование сводится к чему-то подобному:
[CODE]
#include "Tag.h"

Reader r = new Reader(buff, buff_s);
Tag
t = Tag::get(r);
[/CODE]
Получается дёрнув одну статичную ф-ю родительского класса мы на выходе получим соответсвующего айдишнику потомка. Без всяких отдельных созданий фабрик. Верно?
Но ведь в фабрику надо как-то этих самых потомков с присущими им айдишниками загрузить... И я нихуя не понимаю как это делается...
#482 #503217
>>503212
Он мне не даётся.
#483 #503219
>>503217
А ты ему пробовал отдаться?
#484 #503221
#485 #503223
>>503219
Пробовал, он меня отверг.
#486 #503225
>>503223
Ничего, в макдаке тоже должен кто-то работать.
#487 #503227
>>503225
Мне даются точные науки)
#488 #503229
>>503227
Хороший кассир получится.
#489 #503233
>>503229
Хех, и тут ты такой рассказываешь про способ выучить отдаться английскому языку. Ну или учебник на русском подкинешь. Пожалуйста.
#490 #503234
>>503213
Почитал тут про статичные переменные в классах, которой и является массив у фабрики, и кажется понял.
Получается использование выглядит как-то так?
[CODE]
#include "Tag.h"
#include "Tag1.h"
#include "Tag2.h"
#include "Tag3.h"
#include "Tag4.h"

Tag::Registry[0] = Tag1;
Tag::Registry[1] = Tag2;
Tag::Registry[2] = Tag3;
Tag::Registry[3] = Tag4;

Reader r = new Reader(buff, buff_s);
Tag
t = Tag::get(r);
[/CODE]
#491 #503252
>>503233
Запишись на годные платные курсы в своем городе. Обязательно туда, где есть носители языка, потому что если ты ноль вообще, то тебе нужна база для самостоятельного развития. Рано или поздно научишься с гемором, но таки читать и понимать текстовую информацию. Обмазываешься чем угодно, ставишь приложения мобильные, читаешь западные интернеты вместо двощей. Курсера оче заебись заходит с субтитрами - понимаешь 50% слов и заодно слышишь их. Ну и локаль системы, все игры и софт - на английский. Через пару-тройку курсов читать и переводить в голове субтитры станет сложнее, чем интерпретировать подсознательно на слух. Потом и понимание текста подтянется. Через пару лет сможешь читать и даже писать доки на пусть и кривом, но английском. Пруфаю переводом, как я с имеющейся базы в виде адски трудного чтения текста за пару лет выучил английский:

Take a paid course in your city. Choose one with a native speakers. You need a foundation for your self-education. Someday you'll became to understand a text information. Then do anything to help your develop your language knowledge - install English learning apps, read the Reddit instead of the Dvosch. Coursera is very good due to subtitles presence - even if you'll understand a half of the words, you'll get a listening comprehension. Change all your software locales to English. Several courses later, you'll begin to understand speaking without subtitles, but reading skills will also gain. Couple of years later you'll be able to understand and speak English.
#492 #503257
>>503234
Обычно такое делается на препроцессоре.
#493 #503258

>Someday you'll became to understand a text information.


Нде. Чувак, ты бы не позорился.
#494 #503261
>>503252
Спасибо за совет. Но есть ещё вопрос, для изучения специализированных текстов, например по математике и физике, как лучше подойти? И может поискать иностранных студентов в ВУЗе, в котором учусь? Они же по идее подойдут для общения?
#495 #503265
>>503261
Да просто читай их и все. Это самое простое, язык там простой и с кучей слов как в русском . Для грамматики только мёрфи прорешать.
#496 #503266
>>503261

> Но есть ещё вопрос, для изучения специализированных текстов, например по математике и физике, как лучше подойти?


Кроме как читать эти самые тексты и искать переводы слов неизвестных, я не знаю.
Ну и ещё можно их в какую-нибудь зубрилку типа анки (рекомендую) забить.
#497 #503267
>>503258
Не вижу позора - ошибки есть, естественно, как и у начинающих программистов есть ошибки в коде. Главное, что я понимаю на слух речь и свободно читаю книги, плюс периодически вычитываю и правлю свои собственные доки и комментарии в исходниках, а также свободно разговариваю с англоязычными коллегами.
#498 #503270
>>503261
Спасибо за совет. Но есть еще вопрос, для изучения специализированных способов ебли, например, анала и орала, как лучше подойти? И может поискать студентов-тянок в ВУЗе, в котором учусь? Они же по идее подойдут для траха?
#499 #503275
Вот и подошли к БАМП лимиту. Создавай новый тред >>503270
#500 #503276
>>503270
Вот это точно ненужно. Секс сильно отвлекает от учёбы.
#502 #503278
>>503261

>для изучения специализированных текстов, например по математике и физике, как лучше подойти


Они даже легче понимаются, если термины знакомые.
#503 #503360
>>503252
Тебе тоже необходимо на курсы английского. Для начинающих. Даже гугл транслейт лучше переведет.
#504 #503368
#505 #503622
>>497149
хочу.
в чем прикол?)
308 Кб, 1366x768
#506 #504034
Программач, есть один код, который должен переводить число из постфиксной формы в инфиксную. Но он почему-то не выдаёт ответ. Или я не пойму, что я делаю не так. Компилирую в Dev C++, компилируется, но, что бы я не вводил, не работает ничего. Что я делаю не так?

#include <list>
#include <string>
#include <iostream>

using namespace std;
int main() {
list< string > stack;
string str;
while (cin >> str) {
if (str == "+" || str == "-" || str == "" || str == "/" ) {
string b = stack.back(); stack.pop_back();
string a = stack.back(); stack.pop_back();
stack.push_back( string("(") + a + str + b + ")");
} else {
stack.push_back( str );
}
}

cout <<
stack.rbegin();
return 0;
}
Тред утонул или удален.
Это копия, сохраненная 17 июля 2015 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
« /pr/В начало тредаВеб-версияНастройки
/a//b//mu//s//vg/Все доски