Двач.hk не отвечает.
Вы видите копию треда, сохраненную 30 января 2017 года.

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
61 Кб, 1385x1557
1114 Кб, 849x699
64 Кб, 600x450
70 Кб, 620x620
Нестареющий™ инновационный® C++ тред #43 #881172 В конец треда | Веб
Как много языков, молодящихся снаружи,
От старости бегущих в никуда...
Вполне понятно: с пропозалами мы дружим,
А вот с фичами всегда у нас беда...

Мы нацепляем лямбды, ranged-for,
Асинков побольше норовим засунуть в код...
И все нам кажется, что мы достойны трелей,
И студента в программисте можем разбудить...

Ну, хорошо, коль студент тот рядом,
А если он давно уж не студент?...
Смешно смотреть, заманивая скоростями,
Как приходится идти на беспредел...

И всё равно, что студент - уже бывалый программист:
На свой язык он смотрит сквозь стакан,
Последнее, что может быть неясно:
Когда раскроется вот этот весь обман?...

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

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

Прошлый тред: https://2ch.hk/pr/res/866503.html (М)

Q&A
Q: Где шапка?
A: У мочератора. В прошлом треде.

Q: Что делают хейтеры?
A: Сосут член вместе со своими мамашами.

Q: Что делают студенты с лабами?
A: То же, что и хейтеры
sage #2 #881177
>>881172 (OP)

> let products = concatMap (\o -> products o) orders


> (\o -> products o)


facepalm.lhs
881181
#3 #881178
Так, хачкель - декларативный язык.
Чё ты хотешь от с++
sage #4 #881180
>>881172 (OP)
Ну и про C++ — тоже лютая хуйня. Кто блядь возвращает ссылки на локальные переменные?
881182881183
#5 #881181
>>881177
Ну не знаю я хачкеля иначе не перекатывал бы этот тред, чо ты прицепился-то?
Тот же код без orders на конце как минимум в окемле валиден, хз что тут
881185
sage #6 #881182
>>881172 (OP)
>>881180
Т.е. нет. Там какой-то result, который неизвестно где объявлен.
881186
#7 #881183
>>881180
Иди почитай про rvalue, хачкиль мозги разъел.
881188
sage #8 #881185
>>881181

>чо ты прицепился-то?


(\x -> f x) это то же самое, что просто f. Это же очевидно. пиздец ты тупой.
#9 #881186
>>881182
result == products
код писался в пэинте, если что.
#10 #881187
STD = Sexually Transmitted Disease?
sage #11 #881188
>>881183
Иди почитай стандарт. reference на локальную переменную после возврата из функции — dangling reference
881193
#12 #881189
В Haskell'e тоже надо всю эту хуйню задекларировать. Или по крайней мере import соответствующие библиотеки.
Правда, согласен, что все фичи, которые плюсовцы у хачкиля слизывали имеют ну совершенно невменяемый синтаксис!
881191881193
#13 #881191
>>881189
В Java 8 всё ещё хуже.
#14 #881192
>>881172 (OP)
Профессионально кожу на С++. Синьер, СПб, 4 года опыта, проект 1 млн строк. Существует с 2005 года. Переписывался, но целиком никогда. С++ лютый калл, просто лютейший. Сервер компилит с -Wall -Werror. Это просто какой-то калл нереальный. Эти суки тупые всё никак не придумают модули. Ебаные модули из джавы. За 15 лет хуй, не сделали. Если выходит так, что один инклюдит другой и тот инклюдит первый, то это ад пиздец. Разгребать. На любой чих - typedef. Не там поставил, где-то нужно - ебись протаскивай. Либы под платформы и ендианы. иф эндиан - хуяк, елс фигак. Гавно ебаное кароч.
881196884283884380
#15 #881193
>>881188
/0
Нет, но ты все же сходи почитай что такой этот магический &&. Никакой ссылки не возвращается.
>>881189
Братан, ну это уже материал для целого треда. Я просто сделал картинку для привличения внимания (и кстати нормально так бахнуло).
881198
291 Кб, 1648x1098
#16 #881194
Вообще C++ - это такая параша.
Ненавижу.
А Степанов - пидор.
881199
#17 #881196
>>881192

> 1 млн строк


это слишком много для хэллов ворда.
881197881201
#18 #881197
>>881196
Движок игровой, мб.
881201881203
sage #19 #881198
>>881193

> Никакой ссылки не возвращается.


Да, потому что это говно даже не скомпилируется. http://ideone.com/gVSNI5

> магический &&


"Магический" он для новых ньюфагов вроде тебя.
881209
#20 #881199
>>881194
Да, ты прав, это жутчайшая параша, на которой однако можно написать парашу побыстрее чем на няшной (ридонли правда как правило,ы).
#21 #881201
>>881196
Это продакшен код. Его проверяют PVS-студией и прочим. Проект знают только 2-3 лида. Остальные вообще не рубят. Когда кода очень много, а поддерживать скорость разработки и гибкость надо, то код превращяется в месиво из указателей (шаредпоинтеров) и интерфейсов. IObjectSetterListenerGetterOnly достаешь и пытаешься что-то делать. В IDE не проверить. Только в реалтайме.

>>881197
Да. Чей, вы знаете сами. В ДС2 вариков не много.
881204881396
#22 #881203
>>881197

>Движок игровой, мб.


мб, но это показатель мегахуевой архитектуры. хотя индусам за количество строк и платят, кек.
881207
#23 #881204
>>881201

>Это продакшен код.


хуякшен
#24 #881207
>>881203
Я бы с тобой сейчас очень поспорил. Чем выше гибкость - тем выше абстрактность. И самые гибкие вещи в итоге становятся просто дико абстрактными.
881210
#25 #881209
>>881198
http://ideone.com/ZLIl7v
Спутал с && в аргументах, не суть. Придираться к коду написанному в пэинте наобум - это конечно сильно.
881213881221881247
#26 #881210
>>881207

>абстрактность


это лютейшее зло, избегай его.
881214881396
#27 #881211
The Saber 3D engine is Saber Interactive's proprietary engine. The engine was first used on Will Rock (published by Ubisoft), and the recently released God Mode (published by Atlus).The game engine is currently in its fourth stable version (Saber 3D, v.S4).
881231
sage #28 #881213
>>881209
Я тебе ещё раз говорю: у тебя dangling reference.
#29 #881214
>>881210
Теорию графов тоже избегать?
881215
#30 #881215
>>881214

>Теорию графов


ты мтаноблядь что ли? если да, тогда многие вопросы отпадают
881222
sage #31 #881221
>>881209
prog.cc:6:2: warning: Address of stack memory associated with local variable 'i' returned to caller
return std::move(i);
^~~~~~~~~~~~~~~~~~~
109 Кб, 819x452
#32 #881222
>>881215

>ты мтаноблядь


Нет.
881224
sage #33 #881223
Сиплюсплюсеры продемонстрировали тотальное непонимание элементарных понятий своего языка в своём же ITT-треде начиная с ОП-поста...

Это win!
881225881231
#34 #881224
>>881222

>матроид


паржал, даже слова такого не знаю. теперь объясни на пальцах, в каком софте эта хуйня востребована?
881231881234
#35 #881225
>>881223
Я бы сказал так: умудрились написать программу в пару строчек, которая течёт. Хорошо демонстрирует суть языка.
мимиоп
881227881228881232
sage #36 #881227
>>881225
Да нет, это только вашу ньюфажную суть демонстрирует.
#37 #881228
>>881225

>умудрились написать программу в пару строчек, которая течёт


де линк? хочу вкусить
881230
sage #38 #881230
>>881228

> де линк?


4-й пик.
#39 #881231
>>881223
Зачем понимать что-то если у тебя уже есть контракт на миллионы долларов на десятки лет.

>>881224
Я тоже ржу каждый день. С тех кто вообще вкладывает деньги в С++ и меня. Но пока вкладывают.

>>881211
Не знаю ничего про них. Движок могут вообще в США писать. Там у них 10 человек. А В рашке арт и скрипты.
881238881243
sage #40 #881232
>>881225

> которая течёт


Кстати, она не течёт. Ты опять облажался. Она приводит к UB, если кто-то воспользуется этой висячей ссылкой.
881237
#41 #881234
>>881224
Для составления алгоритмов, наверное.
1. Let P := x1 and i := 2.
2. If i > n go to Step 7.
3. Let P = y1y2 . . . yi−1 be the current path.
4. If xi→y1 then P := xiP. Let i := i + 1 and go to Step 2.
5. If yi−1→xi then P := Pxi. Let i := i + 1 and go to Step 2.
6. For j = 1 to i − 2 do: If yj→xi→yj+1 then P := P[y1, yj]xiP[yj+1, yi−1].
Let i := i + 1 and go to Step 2.
7. Return the path P.
881240
#42 #881237
>>881232
Самое главное — что ты смог так точно проанализировать код написанный с максимально утрированной вырвиглазистстью в пэинте. Браво!
881239881242
#43 #881238
>>881231

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


вас где-то наебали
sage #44 #881239
>>881237
Да насрать на пэинт. Я не обращаю внимания на то, что ты локальную переменную назвал неправильно в return-е или что std::move "забыл". Я про суть.
881242
#45 #881240
>>881234

> Для составления алгоритмов


ага, наверное обход контура ну или нахождения кратчайшего пути? правда? так вот, вся эта матанохуйня там нинужна
#46 #881242
>>881239

>что std::move "забыл"


Код читать умеешь — человеческую речь не умеешь. Суть.

Я так же уже писал почему сделал такую хуйню
>>881237

>максимально утрированной вырвиглазистсть


но видимо всё же это непростительно. Пойду в окно прыгну.
38 Кб, 360x288
#47 #881243
>>881231

>Не знаю ничего про них.


Сперасофт? Варгейминг?
881248
35 Кб, 1103x248
sage #48 #881247
>>881209
Мне, кстати, поведение gcc нравится. UB так UB! Вернём нулевой указатель!
#49 #881248
>>881243

>Сперасофт


Слава Богу, ушел!!! Так как зарплату постоянно задерживали. Но, об этом можно догадаться и по предыдущим отзывам работников данной компании. Руководители заинтересованы в своем заработке, а не в вашем процветании. Будут мотать нервы, давать нелогичные задания, лишь бы меньше платить. Никто не станет на вашу сторону, и тем более не войдет в сложившуюся ситуацию.
Обещали спорт, как элемент социального пакета. Забудьте, такого вам не видать. Могут вас подставить и без единого сожаления и колебания, уволить. Менеджеры прикрывают косяки друг друга. Их главная задача, не качественно выполнять работу, а прогибаться под начальство. И, конечно же, подлизаться к клиентам компании, дабы те не пошли жаловаться. Одним словом, работников не считают за людей, так дополнительная рабская сила. Которую в любой момент могут заменить, более удобным вариантом…для них конечно.
881249
#50 #881249
>>881248
спермасофт, кек
#51 #881269
>>881172 (OP)
D:
auto products = orders.map!products.joiner.array;
881278
#52 #881278
>>881269
products должна быть функцией, и должна вызываться ко всем элементам списка рекурсивно и возвращать лист, насколько я понял из того кода, так что нет.

Руст:
fn products(self) -> LinkedList<Products> {
orders.iter().flat_map(|o| o.products()).collect()
}
881360
138 Кб, 1280x720
#53 #881296
65 Кб, 938x1330
#54 #881297
На фото бельгийский Гитлер - император Леопольд Второй - в юношестве.
881321
sage #55 #881314
orders >>= products
#56 #881321
>>881297
Девочка, вроде.
#57 #881360
>>881278

> рекурсивно


Не понял.

> так что нет


Да как так-то?
http://ideone.com/co5ynm
#58 #881363
анон, что-то я туплю
как написать функцию, которая заполняет поля структуры через scanf и как лучше эту функцию принимать, через указатель?
http://pastebin.com/3ndaKRfH
в VS выделяет book в сканфах и пишет expression must have a class type
#59 #881369

>C++


>заполняет поля структуры через scanf


Я новенький, но мне здесь уже нравится!
#60 #881396
>>881210

>это лютейшее зло


Только для макак.

>избегай его


Вон результат этого >>881201

Хотя какие-то даунята всё еще считают, что абстракции это только прокси-фабрики бобов.
881528
#61 #881433
Посоветуйте книжку, которая научит меня легко и приятно пользоваться C++ в новом проекте без легаси. Чтобы программировать как нормальный человек с лучшими практиками на 2016 год, без троллинга.

Писал раньше на C++ в КБ студентом, но в основном это были древние стандарты да и глупый я был.
881494881562
#62 #881494
>>881433
Сам таким был. Липмана читай, не делай заданий, потом просмотри Майерса (эфективные кресты и эфективный стл). Далее что-то о проэктировании, я нихуя не читал кроме дядюшки Боба, потому я и вечный джун (хотя и мидлом числюсь).
#63 #881513
Полон тред какого-то невообразимого говна.
Вас всех надо расстрелять просто, всем лучше от этого будет.
Вам самим тоже.
881526881560
#64 #881526
#65 #881528
>>881396

>Вон результат этого


Наоборот, это результат того, что они пытаются лепить "движок" с абстракциями. Чем больше абстракций, тем больше лапши и говна в итоге, потому что все абстракции протекают.
881529881532
#66 #881529
>>881528
С точки зрения умственно неполноценного быдла - несомненно.
#67 #881532
>>881528

>Чем больше абстракций, тем больше лапши и говна в итоге, потому что все абстракции протекают.


Ты блин альтернативу предложи, как лучше писать что-то сложнее laba1
881537881547
#68 #881537
>>881532

>как лучше писать


отсекая все лишнее, аки окама. тот анон прав, абстракция тянет слишком много ненужного кода.
881538881539
#69 #881538
>>881537
Всё лишнее это что? Вот у тебя есть что-то что должно поддерживать кучу форматов, устройств, протоколов и прочее. У тебя будет 100500 интерфейсов по 1000 строк лишь бы это всё заработало. А еще межбиблиотечное взаимодействие и прочее.
881540881542
#70 #881539
>>881537
Просто ты тупое и мелкобуквенное
Тебе не понять.
#71 #881540
>>881538

>поддерживать кучу форматов, устройств, протоколов и прочее


ето все лишнее
#72 #881542
>>881538
риалстори, сейчас пишу байндинг к одному движку, реализаций таких движков несколько, у каждой своя архитектура и свои ньюансы, писать абстракцию просто невыгодно, заточенный и протестированый код с одного движка за неделю переносится на другой. нет абстракций, код прост, мал и понятен.
881543
#73 #881543
>>881542

>просто невыгодно


А, так ты индус с построчной оплатой.
Самое место тебе, впрочем.
881544
#74 #881544
>>881543
ты долбаеб? твоя абстракция будет больше по размеру, чем две разные реализации.
881545
#75 #881545
>>881544
Если ты криворукий дебил.
Впрочем, ты и есть.
881546
#76 #881546
>>881545
ты какая-то агрессивная крестоблядь, впрочем ничего удивительного
881548881554
#77 #881547
>>881532

>Ты блин альтернативу предложи


Рефакторинг и переписывание. Изначально делать код, который легко изменять и переписывать большими кусками. Лепить костыли поверх абстракций, которые устарели - это самый плохой вариант.
881551
#78 #881548
>>881546

>агрессивная


Но я даже не вышиб тебе все зубы, няша.
#79 #881551
>>881547

>абстракций, которые устарели


Делать устаревающие абстракции - это надо быть реально умственно неполноценным.
Люди, вы омерзительны.
881553
#80 #881553
>>881551

>Делать устаревающие абстракции


Ну не все же ясновидящие Ванги, чтобы все точно наперед придумать.
881559881566
#81 #881554
>>881546

>агрессивная крестоблядь


Он походу вонаби хачкелист, жабамакака ИРЛ.
#82 #881559
>>881553

>не все же ясновидящие


Это только твоя вина.
Работай над собой, животное.
881573
#83 #881560
>>881513
зачем кого то расстреливать
все нежиснеспособное самоликвидируется в мире постмодерна
881564
#84 #881562
>>881433

>C++ в новом проекте без легаси


пишешь из страны розовых пони?
881859
#85 #881564
>>881560

>зачем кого то расстреливать


И то правда, вы даже пули не заслуживаете.
Утопить в выгребной яме.
#86 #881566
>>881553
ну дя, абстракции нужно всеравно допиливать. кстати это же типа абстрактный класс и наследование (я выкатился из крестов, кек) и проблемы теже...
881567
#87 #881567
>>881566

>абстракции


>это же типа абстрактный класс


Дегенерат as is.
#88 #881573
>>881559

>Это только твоя вина


Перестанешь лабы писать - поймешь, что мир сложнее, чем тебе кажется.
881578
#89 #881578
>>881573

>эти проекции галерного гребца


As expected.
881582
#90 #881582
>>881578
Этот юношеский максимализм...
881583
#91 #881583
>>881582

>...


Ясно.
881586
#92 #881586
>>881583
... и черно-белый взгляд на мир.
881591881597
#93 #881591
>>881586
Вовсе нет, бывают и совсем не глупые люди.
Хотя абсолютное большинство - как ты или даже хуже, это да.
#94 #881597
>>881586
в россии лучше видеть все пятьюдесятьми оттенками серого
чтобы было как руSSкое небо 9ть месяцев в году
#95 #881608
у меня насчет бд вопрос возник. можно чисто теоретически представить реляц. бд без связей вообще? просто огромное количество таблиц, просто манипулируем без задней мысли sqlем. получается, связи нужны только для программиста, чтобы он понял что там к чему? или они нужны для каких-то хитровыебанных операций?
881615
#96 #881615
>>881608
Можно вообще всю бд в одну таблицу запихать, в одну колонку и блобом. Только нахуя?

> реляционная


> без связей


Ты можешь не делать явных внешних ключей, но тогда будь уверен, что не выстрелишь себе в ногу. А связи по данным хотя бы ради дедупликации нужны.
У нас например вначале было много внешних ключей, но когда архитектура устоялась и код работы с бд перестал трогаться, то ради производительности их отключили.
216 Кб, 620x412
#97 #881681
Есть двумерный масив (вектор векторов).
Каждый елемент масива - слово.
Каким алгоритмом вывести в файл все возможные комбинакции слов таким образом, что слова из N строчки масива могут идти, только после слов N-1 строчки. То есть
1-2-3
4-5
0
6-7
Дает комбинации:
1406
1407
1506
1507
2406 и тд.
Без деревьев никак?
test sage #98 #881695
#include <iostream>
#include <chrono>
#include <asio.hpp>

void print(const asio::error_code& /*e*/)
{ std::cout << "Hello, world!" << std::endl; }

int main()

using namespace std::chrono_literals;
asio::io_service io;

asio::steady_timer t1(io, 2s);
t1.async_wait(&print);
asio::steady_timer t2(io, 3s);
t2.async_wait(&print);

io.run();
881723
test sage #99 #881696
#include <cstdio>
#include <typeinfo>

struct ass {
virtual ~ass() { printf("%s with %p\n", __PRETTY_FUNCTION__, this); }
virtual void f() { printf("%s with %p\n", __PRETTY_FUNCTION__, this); }
};

int main()

ass ass;
void** pvtbl = reinterpret_cast<void***>(&ass)[0];

printf("%p\n", &typeid(ass));
printf("%p\n", pvtbl[-1]);
881723
#100 #881723
>>881695
>>881696
Мочерок!
А подпишись модно, --м :3
#101 #881730
Надо запилить в борланде такую штуку, типа в зависимости от номера нажатой кнопки (1-9) будут выводиться значения из определенных ячеек в stringgrid'е. Допустим, нажата 1 - в label выводятся значения 1,2,5,6 ячейки. Нажата 2 - выводятся значения 3,4,7,8 ячейки. Нажата 3 - выводятся значения 5,6,9,10 ячейки и т.д. Как это осуществить вообще?
883251
#102 #881761
Анон, объясни, пожалуйста.
В чём профит обходить контейнер используя r-value?
Я имею ввиду вот такое: for( auto &&e : entities )
У меня с move-семантикой пока не лады. Всё никак не могу врубиться у неё. Особенно с perfect-forwarding и прочим таким.
881826
2030 Кб, 1280x1707
43 Кб, 483x604
#103 #881766
Не пойму один момент из книги С. Прата - Язык С++. Лекции и упражнения. А именно:
const free_throws & clone (free_throws & ft.)
{
free_throws pt;
pt = ft; // копирование информации
return pt; // возврат ссылки на копию
}
Первый оператор создает безымянную структуру f ree_throws. Указатель pt
указывает на эту структуру, таким образом,
pt — это сама структура. Создается
впечатление, что приведенный выше код возвращает структуру, однако объявление функции
отражает, что она возвращает ссылку на эту структуру.

Схуяли так можно делать? Ведь мы объявили, что функция возвращает ССЫЛКУ НА СТРУКТУРУ. Но при этом возвращает просто СТРУКТУРУ...
881767881775
126 Кб, 3252x1104
#104 #881767
881775
#105 #881775
>>881766
>>881767
Он тут херни понаписал.

Во-первых. В объявлении pt не хватает "= new free_throws". Далее по тексту у него написано: "free_throws & jolly = clone(three);", хотя должно быть: "free_throws const & jolly = clone(three);", т.к функция возвращает ссылку на константу. А в следующем абзаце, он перепутал clone() с call().
Во-вторых. pt - это указатель. Разыменование (pt) указателя дает нам ссылку на структуру, а не саму структуру, как он написал. Соответственно, с возвратом из функции всё хорошо.
881776881782
#106 #881776
>>881775
От сука, это говно что, любые звёздочки жрет!?
Там перед pt, в скобках, звезда.
#107 #881782
>>881775

>Разыменование (pt) указателя дает нам ссылку на структуру, а не саму структуру


Вот тут не понял. Схуяли?
881784
#108 #881784
>>881782
Такие правила. http://ideone.com/MXVby0
Иначе ты бы не смог изменять херь, на которую указатель ссылается, т.к всегда бы получал копию.
881909
sage #109 #881826
>>881761
Погугли, на SO несколько раз обсасывалось.
#110 #881854
>>881172 (OP)
вот дауны
T&& f() { T t; return t; }
полностью эквивалентно
T f() { T t; return t; }
881894
#111 #881859
>>881562
Пишу критичный к производительности VST плагин
881895
#112 #881894
>>881854

>полностью эквивалентно


Нет, конечно. Первый вариант возвращает ссылку на временный объект.
#113 #881895
>>881859

>VST


Расшифруй.
883703
149 Кб, 1200x800
51 Кб, 604x586
#114 #881909
>>881784

>Такие правила.


А где можно узнать эти "правила"? Хотелось бы увидеть этот пункт, где будет написано: "... когда объявляет ссылку на структуру, а возвращаем структуру, то будет возвращаться ссылка, а не объект". А то блядь получается, что читаешь книгу, в ней пишут что нужно возвращать то, что объявлено в прототипе функции. А применяем уличную магию. Почему? Потому что можем себе позволить. Попахивает каким то очень сильным колдунством,а не программированием.
881932
#115 #881911
Посоны, есть один бинарь одной корейской дрочильни.
В этих файлах хранятся всякие текстуры, картинки, модели и прочее говно. В файлах есть заголовок со всякой инфой, в том числе названия файлов, их оффсеты, размеры и прочее.
Так вот, под название там выделено ровно 512 байт, но строки там хранятся как-то ебануто. Не обычная сишная строка с нулём на конце, нет, там нуль после КАЖДОГО БЛЯДСКОГО СИМВОЛА НАХУЙ!
Ну вот допустим строка "300" там не "33 30 30 00", а "33 00 30 00 30 00", ну и нулями заполнено в конце свободное место.
Собственно вопрос, как эту парашу привести в читаемый вид?
881933881934
#116 #881932
>>881909

> А где можно узнать эти "правила"?


В стандарте можно: http://eel.is/c++draft/expr.unary.op#1 Но тебе туда рано, наверно.

> нужно возвращать то, что объявлено в прототипе функции


Ну всё так и есть. У тебя же не возникает вопросов с (int a; int &r = a;). Инициализировали ссылку не ссылкой. Тоже самое с возвратом по ссылке из функции, с тем исключением, что возвращаемый объект должен жить дольше чем тело функции. В нашем случаее мы объект создали на куче, соответственно он живет пока мы выделенную под него память не освободим.
882018
sage #117 #881933
>>881911

> нуль после КАЖДОГО БЛЯДСКОГО СИМВОЛА НАХУЙ!


>Ну вот допустим строка "300" там не "33 30 30 00", а "33 00 30 00 30 00"


Это называется UTF-16 (лень думать это BE или LE)

> Собственно вопрос, как эту парашу привести в читаемый вид?


Ищи про конвертацию utf16->utf8
В стандартной либе есть какие-то codecvt_blah_blah, но их использование геморройно.
881935
#118 #881934
>>881911
пиздос, ты про не слышал UTF-16?
881935
#119 #881935
>>881933
Спасибо.

>>881934
Слышать-то слышал, а вот видеть не приходилось.
881936881937
sage #120 #881936
>>881935
Вот http://utfcpp.sourceforge.net/
Говорят, header-only и API выглядит просто.
881937882040
sage #121 #881937
>>881935
>>881936
Для хранения utf16 вместо std::vector<unsigned short> (как на сайте), думаю, можно брать std::u16string
882040
910 Кб, 3230x2188
55 Кб, 604x453
#122 #882018
>>881932
Еще один вопрос, анон. Посмотри на пик, почему <int>, если там job?
882033
#123 #882033
>>882018
Опечатка. У Праты полно такого.
882039
86 Кб, 604x604
234 Кб, 1151x731
26 Кб, 400x540
#124 #882039
>>882033
Еще такой вопрос, в чем отличие явной специализации от экземпляра шаблона?

P.S.: Блядь, ну просто полный пиздос. Я сижу, обложившись бумажными версиями 4го издания (Platinum Edition) и 6го издания. Плюс в электронном виде 5ое издание. А также 4ое, 5ое, 6ое издания в оригинале. Опечаток просто тьма нахуй.
882058
#125 #882040
>>881936
>>881937
Ещё раз спасибо, котоны. То что нужно.
#126 #882058
>>882039
Специализация, это ты можешь взять шаблон и написать разную реализацию для разных типов.
Создание экземляра, это ты просишь компилятор сгенерировать код для конкретного типа.

[CODE]
// основной шаблон
template <typename H>
struct P
{
H d;
};

template <>
struct P<int> // специализация P для int
{
int d;
int e;
};

template struct P<double>; // явно попросили создать экземпляр P для double

/ компилятор сгенерирует код по основному шаблону, заменив H на double.
template <>
struct P<double>
{
double d;
};
/

int main()
{
P<int> a; // В a есть d и e, т.к для P<int> есть своя реализация.
P<char> b; // В b есть только d. P<char> сгенерирован неявно по основному шаблону.
}
[/CODE]
#126 #882058
>>882039
Специализация, это ты можешь взять шаблон и написать разную реализацию для разных типов.
Создание экземляра, это ты просишь компилятор сгенерировать код для конкретного типа.

[CODE]
// основной шаблон
template <typename H>
struct P
{
H d;
};

template <>
struct P<int> // специализация P для int
{
int d;
int e;
};

template struct P<double>; // явно попросили создать экземпляр P для double

/ компилятор сгенерирует код по основному шаблону, заменив H на double.
template <>
struct P<double>
{
double d;
};
/

int main()
{
P<int> a; // В a есть d и e, т.к для P<int> есть своя реализация.
P<char> b; // В b есть только d. P<char> сгенерирован неявно по основному шаблону.
}
[/CODE]
#127 #882065
Джентельмены, касаемо инструментария. Тут такое дело, я учу с++ используя code::blocks. Кто мне подскажет, как изменить цвет комментариев в редакторе Блядь, ну правда, сейчас бы читать светло-серые комменты на черном фоне, охуенно же

А еще, был бы благодарен, если бы мне подсказали еще, как там изменить цвета фона и остального текста
882067882070
#128 #882067
>>882065
А еще я долбоеб, забывший про знаки вопроса. Третье предложение текста -- это таки вопрос. Заранее спасибо
883197
#129 #882070
>>882065
И фон -- таки белый. Что-то я жестко туплю, надо спать идти
#130 #882109
Перекатился в джаву, теперь меньше воюю с инструментом и в целом больше доволен программированием. Чего и вам советую.

бывший-оп-революционер
882112882180
#131 #882112
>>882109
Ябы и не против, но я Классический студент с лабами
14 Кб, 667x556
8 Кб, 503x230
#132 #882158
Я наверное всех заебал, спрошу еще раз.
Пикрелейтед - функция для перемещения матрицы 2х2 в зависимости от кнопки на 90 градусов. И теперь для каждой кнопки нужно прописать следующие значения переменных:

кнопка 1: row=0, column=0;
кнопка 2: row=1, column=0;
кнопка 3: row=2, column=0;

кнопка 4: row=0, column=1;
кнопка 5: row=1, column=1;
кнопка 6: row=2, column=1;

кнопка 7: row=0, column=2;
кнопка 8: row=1, column=2;
кнопка 9: row=2, column=2;

Вопрос: как это делается, как не прописывать вызов функции для каждой кнопки, а засунуть все это в цикл или что-то подобное?
882175882197
#133 #882171

>Бьерн Страуструп - Программирование. Принципы и практика использования C++


>Стэнли Липпман, Жози Лажойе - Язык программирования C++


>Стивен Прата - Язык программирования C++


Котаны, посоветуйте с чего лучше начать?
С программированием и базовыми конструкциями (if, for, while) знаком. Delphi
882197
92 Кб, 660x495
sage #134 #882175
>>882158

> 2017


> программирование мышкой

#135 #882180
>>882109
Да, если все равно что кодить, и область деятельности в целом безразлична - то кресты один из самых поганых вариантов для работы программистом.
#136 #882197
>>882171

>Стивен Прата - Язык программирования C++


this

P.S.: Правда стоит заметить, что очень много опечаток и перевод чем дальше (в смысле номера издания), тем хуже.
>>882158

>Пикрелейтед - функция для перемещения матрицы 2х2 в зависимости от кнопки на 90 градусов.


уже.

Это называется поворот, а не перемещение.
882249882278
#137 #882249
>>882197

>Правда стоит заметить, что очень много опечаток и перевод чем дальше (в смысле номера издания), тем хуже.


Это вот пиздец конечно. Не первый раз с таким сталкиваюсь в технической литературе. За что только деньги переводчикам платят?..
882251
25 Кб, 381x500
99 Кб, 607x800
#138 #882251
>>882249

> За что только деньги переводчикам платят?..


За копипаст в переводчик.
sage #139 #882254
>>882251
Пиздец. Они реально перевели "в ореховой скорлупе"?
882262882289
#140 #882262
>>882251
>>882254
А как надо было?
882274
#141 #882274
>>882262
одним словом, вкратце, кратко, в двух [нескольких] словах
2044 Кб, 2001x3000
#142 #882275
127 Кб, 720x960
#143 #882277
#144 #882278
>>882197

> уже.


Что уже-то? Что дальше? Теперь у каждой кнопки что ли прописывать?
void __fastcall TForm1::Button1Click(TObject Sender)
{
row = 0; column = 0;
Func();
}

void __fastcall TForm1::Button2Click(TObject
Sender)
{
row = 1; column = 0;
Func();
}
.
.
.
void __fastcall TForm1::Button9Click(TObject *Sender)
{
row = 2; column = 2;
Func();

Как-то же это сокращается?
882721882723
#145 #882289
>>882251
Страдаем-то из-за этого мы.
>>882254
Да нормально же, чего ты начинаешь.
Вот уж где фэйл так это атака НА титанов
#146 #882299
Кто любит ебать себе мозг и ковыряться в чужом говнокоде — помогите мне с последним заданием на codeforces.
Задача: http://codeforces.com/contest/733/problem/F
Мой код: http://codeforces.com/contest/733/submission/22498991
Задача про теорию графов.

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

Все алгоритмы применяемые в коде имеют в наихудшем варианте асимптотику O(logN).

Можно заметить что все тесты до 42 имели количество нод 650 (за исключением самых первых), в то время как в 42 тесте их стало 10к. Судя по всему проблему надо искать в этом направлении.
#147 #882659
ананасы, подскажите пожалуйста, как изменить цвет кнопки не использую setStyleSheet
882660
#148 #882660
>>882659
забыл добавить, в qt 5
87 Кб, 600x398
34 Кб, 590x350
372 Кб, 2197x1463
sage #149 #882721
>>882278

> RAD (от англ. rapid application development — быстрая разработка приложений) — концепция создания средств разработки программных продуктов, уделяющая особое внимание быстроте и удобству программирования, созданию технологического процесса, позволяющего программисту максимально быстро создавать компьютерные программы.


>Как-то же это сокращается?



Что, RAD Studio (или её огрызок) не очень способствует быстрой разработке приложений?
74 Кб, 660x495
459 Кб, 1000x667
281 Кб, 644x429
sage #150 #882723
>>882278

> C++ Builder (по-русски обычно произносят [си-плюс-плюс билдэр], [си билдэр]) — программный продукт, инструмент быстрой разработки приложений (RAD)



> инструмент быстрой разработки приложений


> Как-то же это сокращается?


> инструмент быстрой разработки приложений

#151 #882756
Помогите плиз, что-то нихуя не выходит с realloc ()

void formMas(int x, int u, int nX, int nU) {
for (int i = 0; i < nX; i++) {
u = (int
)realloc(u, (nU + 1) sizeof(int));
if (u == NULL) { cout << "ошибка"; return; };
u[nU] = x;
++
nU;
};
}

Что не так в процедуре ? Из мейна ее вызываю,
formMas(x, u, n, &l);

x - указатель на заполненный массив длинной n
u - указатель на массив, который надо заполнить. Пока что u=NULL на момент передачи
l - длина u,равна 0.
882757882808
#152 #882757
>>882756
Быстрофикс

void formMas(int x, int u, int nX, int nU) {
for (int i = 0; i < nX; i++) {
u = (int )realloc(u, ( nU + 1) sizeof(int));
if (u == NULL) { cout << "ошибка"; return; };
u[ nU] = x;
++
nU;
};
}
882808882975
#153 #882808
>>882757
>>882756
Сколько вам, даунам, нужно повторять, что форматирование тут пидарасит и что заливать исходник надо в другое место?
#154 #882863
Поясните чому такой код дает command terminated:

...
while(a!=0){
t = a
a = b
b = a - b;
}
...
882970
#155 #882915
Почему статическую переменную в классе нельзя инициализировать внутри этого класса а нужно инициализировать её снаружи?
#156 #882970
>>882863
что такое command terminated?
может ты точку с запятой не поставил?
883043
#157 #882975
>>882757
Ошибки пиши в cerr
После for точка с запятой не нужна
Не вставляй код на двач
u[nU] = x; что ты хотел сделать этой командой? скопировать массив?
#158 #883043
>>882970
Нашел источник проблемы. Одна из переменных задавалась как:
a = (int) f / k
но результат почему то не int
883049
#159 #883049
>>883043
короче решил сам, но запрос такой: что можно прикрутить к vim, чтобы он помогал отлавливать такие хитрые ошибки?
883058
#160 #883058
>>883049
Для него даже автокомплита человеческого не запилили, а ты блять требуешь анализ кода на лету, лол.

Поставь IDE + плагин vim-mode (в цлионе и культе точно есть такие).
#161 #883167
Такой вопрос. Есть одна bool переменная, которая используется в потоке A. Я могу поменять её значение в потоке B. Нужно ли мне использовать примитив синхронизации?
883202
#162 #883197
>>882067
Какой ты беспомощный. Даже тему в своей псевдо-IDE настроить не можешь.
sage #163 #883202
>>883167
Естественно, лол. Иначе будет data race, что есть UB
#164 #883227
Помогите первокуру. С клавиатуры вводится последовательность из N действительных чисел. Вывести все неубывющие подпоследовательности элементов идущих подряд.
883248
sage #165 #883248
>>883227
В ньюфаг-тред.
#166 #883251
>>881730
бляяяя )
#167 #883266
Можно ли в крестах запилить рекурсивную структуру. Например реализовать суффиксальное дерево на мапах. Каждый ключ одна буква, а значение новые мапы. Если значение пустое, то это последняя буква. Как такое сделать?
3 Кб, 341x362
#168 #883267
>>883266
Картинку забыл.
sage #169 #883271
>>883266
tagged union
std::variant, если хочешь быть модным
sage #170 #883273
>>883266
Хотя, может я поторопился тебе советовать.
#172 #883276
>>883275
А без классов?
883357
sage #173 #883279
>>883275
Вообще там map с incomplete type, что нельзя.
883359
#174 #883318
Сап, помогите с тестом по классам. С меня как всегда.
883320
262 Кб, 1620x2160
287 Кб, 1620x2160
304 Кб, 1620x2160
#175 #883320
>>883318
Я настолько тупой, что даже пикчи не загрузил.
sage #176 #883322
>>883320

>Я ... тупой


Это твои проблемы, никто тебе помогать не будет.
883329
#177 #883329
>>883322
А как же проверить самого себя, все дела?
883332883333
#178 #883332
>>883329
Нормальные фото сделай, это нечитаемое говно, понятны только по 2 вопроса в центре.
sage #179 #883333
>>883329
Товарищ семинарист тебя проверит.
sage #180 #883335
>>883320
Скучные вопросы. Хоть бы изюминка была какая-то.
Например, в десятом убрать public: в Derived
883338
sage #181 #883338
>>883335
А, не. Там есть изюминка. Затупил.
sage #182 #883346
>>883320
В пятом нет верного ответа.
883347
#183 #883347
883348
sage #184 #883348
>>883347
Как ты уверенно судишь об undefined behavior. Вдруг вызовет )))
sage #185 #883351
>>883320
Шестой тоже странный вопрос. Мне кажется, или он предполагает какое-то значение sizeof(int), но про это явно не написано?
883364
#186 #883357
>>883276
Хотя у меня и так получилось
http://ideone.com/m6ahQx
рейт
883359
sage #187 #883359
>>883357
Я же написал: >>883279
883360883361
#188 #883360
>>883359
Что нельзя? У меня получилось.
sage #189 #883361
>>883359

> Что нельзя?


map с incomplete type

> У меня получилось.


UB
883365
#190 #883364
>>883351
Именно так. Какой ответ там, няша?
#191 #883365
>>883361
заебал с ub
883366
sage #192 #883366
>>883365
Я-то при чём? Так в стандарте написано.
883372
#193 #883372
>>883366
теперь лучше?
883373
sage #194 #883373
>>883372
Нет.
883375
#195 #883375
>>883373
Что переделать?
883376883377
sage #196 #883376
>>883375
А. Ты поправил там. С указателем должно быть не UB.
sage #197 #883377
>>883375
Только оно течёт, наверное. Примени unique_ptr, если руками чистить лень.
883384
#198 #883384
>>883377
добавил деструктор
нормально?
883386
sage #199 #883386
>>883384
Только зачем ты после всех закрывающих скобок лепишь точку с запятой? Формально, конечно, ошибки нет. Но.
883387
#200 #883387
>>883386
привычка
убирать лень
8 Кб, 560x315
#201 #883409
Выручай, анон! Поставил свеженький OpenCL 3.0, пишу первое приложение, на моменте создания queue с помощью clCreateCommandQueueWithProperties выскочила ошибка - "не найден энтри поинт в OpenCL.dll", порыскав по интернетам, обнаружил, что это можно решить положив дллку в папку с проектом, после чего ошибка сменилась на другую - см пикрилейтед. А вот про это дерьмо я уже почти ничего нагуглить не могу. Щито делать?
Водные данные: пытаюсь запустить код на видеокарте (amd 8800m, дрова обновил), свойства, запихиваемые в означенную выше функцию - cl_queue_properties props[] = {
CL_QUEUE_PROPERTIES, CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE | CL_QUEUE_ON_DEVICE , 0
}, винда 64 восьмёрка, дллку, положенную в папку с проектом, брал из sdk/bin/x86_64, кожу в студии 15.
883418883427
#202 #883418
>>883409

>свеженький


Говнецо ведь.
883425
#203 #883425
>>883418
В этом вопросе я еще довольно ньюфажен. Думаешь, поставить более раннюю версию? И почему говнецо?
sage #204 #883427
>>883409

> amd 8800m


> Поставил свеженький OpenCL 3.0


ЛОЛ. Ты правда думаешь, что OpenCL можно взять и "поставить" какой хочешь? Твоя карта только OpenCL 1.2 поддерживает.

(Я даже не знаю, что 2.0 поддерживает)
883430883872
#205 #883430
>>883427
Ближе к ночи я начинаю нести хуйню. Не OpenCL, конечно, а amd app sdk. У самого OpenCL вообще последняя версия 2.2
883432
#206 #883432
>>883430
Бля, а ведь clCreateCommandQueueWithProperties только с OpenCL 2.0. А какого то хуя на старую clCreateCommandQueue студия ругается deprecated. Перекатываться на старую версию сдк?
#207 #883437
Ночное программирование.
Передо мной поставили в вузе задачу написать класс, объект которого представляет из себя динамический массив, который сортируется одним из своих методов, а также возможностью быстрого поиска.
Если нормально переписать тз, то получается:
Необходимо реализовать динамический массив чисел с возмножстью поиска и сортировки. Идея реализации: выделяется небольшой (1) массив, по мере его заполнения выделяются такие же, которые связываются в список.(2) Также должны быть следующие методы(их больше, но эти мне непонятны.)
Создать массив заданной начальной длины.(В смысле такой длины должны быть мои массивы в (1)?)
Удаление элемента по индексу.(Все остальные элементы надо видимо сдвинуть?)
Ну и самое непонятное это (2).
Что здесь вообще от меня хотят? О каких списках речь и через что их реализовывать?
Я вот описал такой список через структуру следующим образом
-------------
struct Num_Massive_//один из мини-массивов
{
Num_Massive_
prest;//ссылка на предыдущий такой массив
Num_Massive_ after=Null;//ссылка на следующий
double Numb[10];//сами значения
}
-------------

Понимаю, что с некоторыми вопросами могут быть проблемы, но все же надеюсь на помощь.
884281887417
#208 #883703
>>881895
Синтезатор.
#209 #883704
privberasdfsdaf
#210 #883856
Котаны, скиньте launch.json и tasks.json для запуска через VS Code. Не могу никак настроить.
#211 #883872
>>883427

>Я даже не знаю, что 2.0 поддерживает


Интелы, АМД вроде тоже.
15 Кб, 480x163
#212 #883879
Сиплюсач, помоги.
Начал читать Прата. И на первом же хеллоуворлде студия плюется ошибкой. Пикрелейтед.
Кто сталкивался, как пофиксить?
883883
#213 #883883
>>883879
Поставить Win10
883945
45 Кб, 500x500
#214 #883915
Как проверить, упорядочен ли числовой массив ARRAY[N][N] по строкам по возрастанию? И если упорядочен, то выйти из программы?

Чето не робит.

bool value;
for (i = 0; i < 4; i++) for (j = 0; j < 4; j++) {
if (arr[j] < arr[i + 1][j])
value = true; }

if (value == true) выйти из программы;
883929884219884278
sage #215 #883929
>>883915
>>881172 (OP)

>Q: Что делают хейтеры?


>A: Сосут член вместе со своими мамашами.


>


>Q: Что делают студенты с лабами?


>A: То же, что и хейтеры

883937
#216 #883936
хочу вкатиться в nasa/jpl/lanl. что из c\c++ нужно знать и уметь?
884275
#217 #883937
>>883929
Я слишком тупой для вуза, я типа самообразованец
883978
#218 #883945
>>883883
Нет. Нафиг мне эти зодны.
883970
sage #219 #883970
>>883945
Тогда ставь Gentoo.
883972
sage #220 #883972
>>883970
Когда нечего сказать по делу
883977
sage #221 #883977
>>883972
Когда есть чего — тоже можно ставить.
sage #222 #883978
>>883937
Ты сходен со студентом с лабой до степени смешения.
#223 #884158
>>881172 (OP)
Сколько времени нужно дрочить кресты, чтобы получить работу?
Исходные данные: линуксовый админ, скрипты на питоне/баше, С уровня универовских лаб, БД на уровне 10 запросов, а что внутре - хз.
884200
#224 #884200
>>884158
10k hours
887487
25 Кб, 831x293
#225 #884219
#226 #884275
>>883936
Для наса надо уметь всё.
#228 #884281
>>883437
гугли std::vector, template и qsort
885249
#229 #884283
>>881192
Зачем вообще нужна толпа программистов на готовый проект? Написал миллион строк и проект готов. Пользуйся. Зачем ещё платить программистам чтобы они его переделывали?
#230 #884308
Есть 2 варианта спермокода:
[code]int main(int argc, char argv[])
{
FILE
f = fopen(argv[1], "rb");
}[/code]
[code]int main(int argc, TCHAR argv[])
{
FILE
f = _wfopen(argv[1], L"rb");
}[/code]
Первый вариант работает, а второй возвращает нуль и errno 2 (нет такого файла). Но файл-то есть...
Что за хуйня?
884325884395
#231 #884325
>>884308
Бля, я даун, надо было _tmain, а не main...
#232 #884380
>>881192
дай попробую угадать
smart tv платформа?
#233 #884395
>>884308

> этот спермо-C++...



Ящитаю, нужно запретить отписываться в этом треде про спермоC++. С managed C++ сюда ведь никто не лезет?
#234 #884398
Аноны, помогите, пожалуйста. Я ниразу не начинал изучать c++(учил питона). Дали задание "найти значение которое будет выведено 11-ым по счету"

bool f(int k) {
bool flag; int j;
flag = true;
for(j = 2; j<= k/2; j++)
if(k % j == 0) {
flag = false;
break;
}
return flag;
}
int main()
{
int n = 999999, i;
for(i = 2; i<=n; i++)
if(f(i))cout << i << endl;
return 0;}
#235 #884401
bool f(int k) {
bool flag; int j;
flag = true;
for(j = 2; j<= k/2; j++)
if(k % j == 0) {
flag = false;
break;
}
return flag;
}
int main()
{
int n = 999999, i;
for(i = 2; i<=n; i++)
if(f(i))cout << i << endl;
return 0;}
45 Кб, 2006x136
#236 #884433
Няши, я совсем не понимаю, что не так, и гуголь не помогает. Всё очень просто: у меня есть некий

> char letter;


и я хочу вводить его через консоль.
Но стандартное

> cin >> letter;


заставляет программу падать. Как это можно победить? Вводить string и конвертировать?
884436
201 Кб, 1436x956
#237 #884436
>>884433
Макаба съедает звездочки, совсем забыл. Вот скрин. Алсо, cin.get тоже не помогает.
884484884522884524
с++ Зяблый #238 #884443
Напишите программу, которая создает файл, состоящий из N строк. В первой строке запишите одну цифру "1", во второй - две цифры "2", и так далее, в строке с номером N - соответствующее число цифр "N", 1 ≤ N ≤ 9.
(Автор этого поста был предупрежден.)
884446884506
#239 #884446
>>884443
Написал, как платить удобней?
884449884453
#240 #884449
>>884446
Битками.
#241 #884453
>>884446

>как платить удобней


Сбербанком, а сколько ты готов заплатить?
884465
#242 #884465
>>884453
20 рублей заплачу
884478
#243 #884478
>>884465

>20 рублей


Кто больше?
884479884480
#244 #884479
>>884478
20 BTC
#245 #884480
>>884478
Ок, плати.
884490
#246 #884481

>Прата


>Пришло время рассмотреть последний целочисленный Тип: char.


Ну пиздец.
#247 #884484
>>884436
Нежели никто не знает? Это же вообще основы, я просто понять не могу где косяк.
884492884512
#248 #884490
>>884480
Заплатил. Ты знаешь где проверять.
884493
#249 #884492
>>884484
Что по твоему такок char* и что написано в документации про cin.get. Почему ты думаешь это должно работать? следующий раз сам себе эти вопросы задай
884500
#250 #884493
>>884490
Ничего нету. 2 раза проверил.
884494
#251 #884494
>>884493
По привычке проглотил?
884497
#252 #884497
>>884494
Наверн.
#253 #884500
>>884492

> Что по твоему такок char*


Это переменная для одного символа. И она не работает без указателя. Что ты хотел услышать?

> что написано в документации про cin.get


То, что это альтернатива cin <<, которая является методом вывода данных в консоль.
И это не приблизило меня к пониманию проблемы.
884501884503
#254 #884501
>>884500

> альтернатива cin <<


cin >> конечно же. А вообще, мог бы и так ответить.
#255 #884503
>>884500

> переменная для одного символа


А что такое char и чем он от char* отличается?
884510
#256 #884506
>>884443

>(Автор этого поста был предупрежден.)


Найс.
#257 #884510
>>884503
Никогда не задавался таким вопросом честно говоря. На сколько я помню, он всегда используется с указателем. По крайней мере, у меня ничего без указателя не работало впоследствии.
884511884513
#258 #884511
>>884510
Ясно. Учи указатели и читай про си строки.
884515
#259 #884512
>>884484

>я просто понять не могу где косяк.


У тебя в ДНК.

>Всё очень просто: у меня есть некий char letter; и я хочу вводить его через консоль.



char letter;
cin>>letter;
или
cin.get(ch);
или
ch=cin.get();
884514884515
#260 #884513
>>884510
Ты в курсе, что есть более эффективные методы познания, чем метод тыка вслепую?
884515
#261 #884514
>>884512
Get не умеет си строку возвращать.
#262 #884515
>>884511
Я и так знаю, что такое укзатели, спасибо. Это переменные, указывающие ( и использующие) память другой переменной.
>>884512

> У тебя в ДНК.


Ну так этого у каждого. За столько миллионов лет, на земле не осталось ни одного не мутироваашего вида.
А вообще, присвоить одну переменную другой я и сам догадался. Разве нет менее костыльно способа?
>>884513
Есть, да. Я например в инстиуте учусь, только я не виноват что нам нихуя не объясняют а заставляют пилить ебанутые программы на языке, который я никогда не учил. Нет, чтобы всё как у людей - есть array, есть mutable array. Нет блять, хочу какие-то векторы изобретать. Вектор - это же направленный луч! С какого хуя он стал массивом? Я за сегодняшний день столько новго узнал, что ахуеть.
884517884521885163
#263 #884517
>>884515

> Вектор - это же направленный луч! С какого хуя он стал массивом?


Страуструп пояснял. Типа у него есть длина и отсчёт с нуля, а array занят сишным массивом.
884525
#264 #884521
>>884515

>Это переменные, указывающие ( и использующие) память другой переменной.


NYET.
Это целочисленные переменные, содержащие адрес чего-либо. Или есть ещё адрес + ограничение длины
884525
#265 #884522
>>884436

>char звёздочка letter


Тут ты объявляешь УКАЗАТЕЛЬ на ОБЛАСТЬ памяти.
И на что он у тебя указывает? На хуй знает что, т.к. ты его ничем не инициализировал.

Когда std::cin пытается что-то записать в хуй знает какую область памяти, то всё идёт по пизде.
Указатель ОБЯЗАН указывать куда-то, если ты хочешь работать с данными по его адресу.

В твоём случае достаточно просто создать переменную на стеке. Т.е. написать char letter. И уже с ней работать.

http://cpp.sh/2rbp
884525
#266 #884524
>>884436
Что за иде? А шрифт?
884526
240 Кб, 2064x920
#267 #884525
>>884517
Охуительно конечно.
>>884521
Мда, это я видимо перепутал с &.
>>884522

> Т.е. написать char letter.


Уже пытался, тогда по пизде идет всё остальное.
Видимо, просто сделаю 2 переменные, и укажу одной на другую.
884528884539
#268 #884526
>>884524

> Что за иде?


Xcode же. Я на нем в ObjC пишу, но он поддерживает и C++. Шрифт - San Francisco
884527
#269 #884527
>>884526
Спасибо
#270 #884528
>>884525
Судя по ошибке на твоём скриншоте у тебя там std::map, у которого ключ какой-то int, а значение std::string.
ВСЮ строку(std::string) сравнить с одним символом(char) нельзя.

Давай сюда код. Через ideone или pastebin. И так, чтобы он скомпилился.
884538
Крестухи не смогут ответить на этот вопрос #271 #884529
int main()
{
// предположим, было выведено 4
std::cout << sizeof(int) << std::endl;

int *x = new int;

// предположим, было выведено 0x60000000
std::cout << x << std::endl;

// что выведется тут???
std::cout << x + 3 << std::endl;
}
#272 #884530
>>884529
0x60... + 3*sizeof(int)
884532884546
sage #273 #884531
>>884529
Что угодно, а может даже сегфолт.
884532884533884535
#274 #884532
>>884530
Первый неверный ответ.
>>884531
Ну типа того. Только надо грамотнее выражаться, грамотнее.
sage #275 #884533
>>884531
Я в глаза ебусь и обосрался.
884534
#276 #884534
>>884533
А я уж понадеялся...
#277 #884535
>>884531
Арифметика указателей. Тут всё законно.
#278 #884538
>>884528
http://pastebin.com/dk28Qfx3
Вот, только он падает по той же ошибке, как я и описал, из-за char. Все остальное работает как должно.
#279 #884539
>>884525
Если ты хочешь узнать есть ли подобный символ в строке, то нужно использовать ПОИСК в строке, а не сравнение с символом.
В твоём случае:
if (useletters.find(letter) != std::string::npos){
std::cout<<"Letter exist"<<std::endl;
}
884540
#280 #884540
>>884539
Мне нужно не только знать, есть ли он в строке, но еще и знает его номер. Но вообще да, вектор здесь не нужен, это можно сделать и со string через find, мне уже сказали.
884545
#281 #884545
>>884540

>vector<string> usedLetters(27, '0');


Тут тебе строка(std::string) не нужна, если ты работаешь с массивом(std::vector) символов.
Меняй на vector<char> usedLetters(27, '0');

>auto it = std::find(vWord.begin(), vWord.end(), *letter);


Тут уже не нужно разыменовывать указатель, т.к. уже он не используется.
Меняй на std::find(vWord.begin(), vWord.end(), letter);

>auto it = std::find(vWord.begin(), vWord.end(), letter);


Тут тебе нужно использовать std::find из algorithm (http://en.cppreference.com/w/cpp/algorithm).
Добавь #include <algorithm>

Версия, которая компилится без ошибок. Логику работы я не проверял.
http://ideone.com/fGvE8N
884563
#283 #884547
>>884546

> ideone


Пруф уровня /pr/..

Я тоже так могу. Вот, смотри http://ideone.com/ax7CeC пруф того, что локальные переменные инициализируются нулём
884551884554
#284 #884548
А можно на плюсах писать C-style? Есть у такого кодинга собственные фанаты?
#285 #884551
>>884547
Тогда буду рад цитатке из стандарта крестов, т.к. и правда не понимаю с чего будет выведен не адрес, а не кусок памяти по адресу + 3*sizeof(int).
884553884562
#286 #884553
>>884551

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


Я тоже не понимаю. Я нигде этого не утверждал.
#287 #884554
>>884547
Проверялка, ты сперва пруфани что его ответ неправильный.
884555
#288 #884555
>>884554
А ты пруфани что не инициализируются нулём.
#289 #884562
>>884551

>Тогда буду рад цитатке из стандарта крестов


Надо дать время другим подумать.
884570
#290 #884563
>>884545
Большое спасибо, всё работает. Я, правда, так и не понял, почему у меня это не заводилось когда я сам убирал везде указатели.
884586
#291 #884570
>>884562
http://caxapa.ru/thumbs/468328/misra-c-2004.pdf
7.1

И стандарт:
http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1124.pdf
6.5.6

В итоге это UB, если мы пытаемся выполнить операцию, которая за границами массива.
Верно?
884571
#292 #884571
>>884570
Верно.
884575
#293 #884575
>>884571
Сам обосрался, сам починился. Классика.
#294 #884580
Я снова выхожу на связь. В моем гениальном быдлокоде появился один ахуительный просчет.

> find(vWord.begin(), vWord.end(), letter);


находит только первое значение. То есть если в слове 2 одинаковые буквы, find показывает номер только первой. Это можно как-нибудь обойти? На ум приходит только отрезать начало до номера первой буквы и проверить снова, так до конца.
884583884596
#295 #884583
>>884580
find возвращает итератор, указующий на найденную букву. Начинай поиск не с vWord.begin(), а с этого итератора.
884585
#296 #884585
>>884583
Напиздел, не итератор возвращает.
Ок. Начинай с vWord.begin() + то, что вернул find
884587884589
#297 #884586
>>884563
Т.к. у тебя был

>vector<string> usedLetters(27, '0'); //USED LETTERS



А в строке

>if(usedLetters == letter){ ...


Сравнение std::string с char. Т.е. одной строки с одним символом. Это совсем разные типы.
Чтобы сравнить первый символ строки с твоим символом, то получить его можно с помощью оператора []

Если расписать строчку со сравнением, то всё встанет на свои места.
std::string str = usedLetters;
char compare_letter = str[0]; //0 - индекс символа в строке, с которым ты хочешь сравнить.
if (compare_letter == letter){ ...

Если не расписывать, то итоговая версия выглядела бы так:

>if(usedLetters[0] == letter){ ...

884589884596
#298 #884587
>>884585
Или не напиздел. Я подумал, что find это string::find
#299 #884589
>>884585
Ну, то что на пике не работает, хотя может я туплю.

> vWord.begin() + то, что вернул find


А вот это кажется реальным, сейчас попробую.
>>884586

> Сравнение std::string с char.


Сижу и проигрываю с себя же. Надо было ведь так проебаться. А я,
884590884591
39 Кб, 2060x132
#300 #884590
>>884589
Отклеилось.
884592
#301 #884591
>>884589
Если это std::find, то надо как я написал сначала.
#302 #884592
>>884590
auto it = begin(vWord);
while ((it = find(it, end(vWord), char) != end(vWodr))
{
blah-blah-blah
}
884593884595
#303 #884593
>>884592

>while ((it = find(it, end(vWord), char) != end(vWodr))


while ((it = find(it, end(vWord), char)) != end(vWodr))
скобку забыл

self-fix
#304 #884594
Реквестирую тыжпрограммиста для исправления багов в изишной проге. Заплачу денежку.
скайп you.arehome
884614
#305 #884595
>>884592

> begin(vWord);


Может быть vWord.begin()? Иначе ругается.
884597
#306 #884596
>>884586
Половину квадратных скобок спиздила вакаба. Что поделаешь. Надеюсь суть донёс.

>>884580
Тут всё просто. Надо начинать поиск с прошлой позиции + 1.
http://ideone.com/a68DxG
884598
#307 #884597
884598
#308 #884598
>>884596

> Надеюсь суть донёс.


Донёс, и очень даже понятно.

> Надо начинать поиск с прошлой позиции + 1.


Я так и понял, да.
>>884597
Всё, понял. Спасибо.
884601
#309 #884601
>>884598

>Надо начинать поиск с прошлой позиции + 1.


Да, точно. Тогда find(it+1, end(vWord), c) и т.д.
#310 #884604
Кстати, ещё один вопрос крестухам, на этот раз простой: почему можно писать begin(vWord) (где vWord это std::vector<char> или что-то вроде этого) без "std::"?
884606884617
#311 #884606
>>884604
Естественно, подразумевается, что никаких using namespace std или using std::begin нет, иначе это тривиальный вопрос.
884612
#312 #884612
>>884606
А то тебе сказал что можно?
884615
#313 #884614
>>884594
бамп!
884616
#314 #884615
>>884612
Ну сам проверь, лол
http://ideone.com/h7mCxh
#315 #884616
>>884614
Зачем бампать, если указал скайп?
#316 #884617
>>884604
Koenig Lookup
884620
#317 #884620
>>884617
Какое-то заумное название. Я такого не знаю, я знаю проще.
884623
#318 #884623
>>884620
Окей, проще - компиль будет искать вызываемую функцию в неймспейсе аргумента. Такой принцип и есть Koenig Lookup
884624884625
#319 #884624
>>884623
Я имел в виду Argument-Dependent Lookup. Ну или просто ADL ))
884626884627
#321 #884626
>>884624
>>884625
ЛОЛ ХАЙВ МАМ ХАЙП ДВАЧУЮ!!111
#322 #884627
>>884624

>Argument-dependent name lookup


> This behavior is also known as Koenig lookup, as it is often attributed to Andrew Koenig, though he is not its inventor.[2]



Оживляю С++ тред спамом.
#323 #884630
Из-за ADL можно иногда писать find вместо std::find и accumulate вместо std::accumulate и проч., но, в отличие от std::begin, так не делать крайне нежелательно.
884631
#324 #884631
>>884630
Точнее, так. Можно писать и иногда это будет работать.
884640
#325 #884640
>>884631
Я бы добавил, что по этому поводу стоит прочесть Exceptional C++.
Вдруг кому-то не похуй
884643
#326 #884643
>>884640
А что там написано по этому поводу?
884650
#327 #884650
>>884643
Конкретно в части - Name Lookup, Namespaces, and the Interface Principle
Описано как вообще работают неймспейсы в крестах.
https://www.vanko.me/sites/vitki.net/files/attachments/sutter-exceptional-cpp--47-puzzles_0.pdf
884651884654
#328 #884651
>>884650
Не, я конкретно про то, что не стоит полагаться на ADL для всяких find accumulate for_each
884656
#329 #884654
>>884650

> chm перегнанный в pdf


Трудно представить что-то более отвратительное.
#330 #884656
>>884651
Лол. Я давно читал, так и скажу.
Но, уверен, что там было написано что нехуй так делать.
Т.к. в итоге можно огрести проблем.

Типа http://ideone.com/1WHOic
884657884662
#331 #884657
>>884656
Не, у меня другие соображения.
#332 #884662
>>884656
Типа вот, http://ideone.com/FVbihT
Замени vector на array, например.

Кстати, я понял, что std::begin до begin тоже лучше не сокращать, иначе на простых статических массивах выйдет облом.
884665884667
#333 #884665
>>884662
Хотя, может с std::begin стоит поступать, как с std::swap? Писать using std::begin; и применять его без std::
884666
40 Кб, 754x268
#334 #884666
>>884665
Да, так и есть
#335 #884667
>>884662
Согласен.
Радует, что это достаточно искусственные примеры.
Пока в пром. коде нигде подобного не видел.

Таки везде либо указан неймспейс, либо using.
884669
#336 #884669
>>884667
Кстати, до сих пор не понимаю, почему у gnuтых итератор в std::vector-е это не просто поинтер, как для std::array
884673
#337 #884673
>>884669
Думаю, что из-за того, что std::vector<bool> должен быть ОСОБЕННЫМ. Он bool хранит не как последовательный массив значений.

http://ideone.com/jvIzJG
884674
#338 #884674
>>884673
Так это. Тип итератора в не-bool вектор и так отличается от типа итератора в bool-вектор.
884676
#339 #884676
>>884674
Ты прав.
Тогда у меня идей нет.
884679
#340 #884679
>>884676
Есть идея что это наследие C++98/03, там, вроде, не было требования хранить данные в векторе непрерывно и не было std::vector::data(), а в C++11 появилось требование. ABI ломать не стали.
702 Кб, 1506x2160
#341 #884697
#342 #885149
Почините определение функций не меняя объявления класса.

http://ideone.com/FYAby5
52 Кб, 665x288
#343 #885163
>>884515

>Вектор - это же направленный луч!


Не луч, а направленный отрезок.
Ведь существует модуль вектора

>>Я например в инстиуте учусь, только я не виноват что нам нихуя не объясняют а заставляют пилить ебанутые программы на языке, который я никогда не учил. Нет, чтобы всё как у людей - есть array, есть mutable array. Нет блять, хочу какие-то векторы изобретать. Вектор - это же направленный луч!


В каком ты институте-то учишься?
885166885188
#344 #885166
>>885163

> Не луч, а направленный отрезок.


Да, точно.

> В каком ты институте-то учишься?


http://feri.um.si/
885169
#345 #885169
>>885166
И тебе в словении не давали матричной алгебры?
885174
#346 #885174
>>885169
Нет, на математике как таковой щас проходим (и проходили с октября) интегралы и всё, что с ними связано, а на погромировании были темы уровня "как поставить ide", потом совсем основы, ну и сегодня вот указатели.
#347 #885176
>>885149
Бамп.
#348 #885179
Аноны для чего нужна инкапсуляция?
Как она применяется на практике? Не Совсем понимаю выгоды сокрытия переменных и функций если доступ к ним осуществляется через всякие интерфейсы.
#349 #885181
>>885179
Ты не испортишь переменную из вне если у тебя нет интерфейса для её редактирования. И это неотъемлемая часть ооп. Как ты создашь класс без инкапсуляции?
885184885199
#350 #885184
>>885181
Точно так же. Только не буду к переменным напрямую обращаться.
Да и вообще часто во всяких игровых движках в классе вектора обращение делают к координатам напрямую.
885186
#351 #885186
>>885184
Как это напрямую? Класс же состоит из этих объектов. Ты просто не сможешь создать класс и не включить в него ни один объект. сможешь, но он будет бесполезен
885199885213
#352 #885188
>>885163

>Не луч, а направленный отрезок.


>Ведь существует модуль вектора


Вообще-то вектор - это элемент линейного (векторного) пространства, который можно представить в виде направленного отрезка.

>>885179

>Аноны для чего нужна инкапсуляция?


>Не Совсем понимаю выгоды сокрытия переменных и функций



Так в этом же и вся фишка. Чтобы спрятать как можно больше данных от прямого воздействия на них. Оставив лишь возможность взаимодействия только лишь через интерфейс.

Плюсы и минусы инкапсуляции?

Плюсы:
1) Полный контроль над входящими и исходящими данными

2) Можно, без боязни сломать все остальное приложение, править реализацию методов компонентов. Так как во всем остальном приложение фигурирует только интерфейс. А вы меняете только реализацию логики.

Минусы:
1) Если вы нашли ошибку в библиотеке которую используете. То вам будет трудно ее исправить.

2) Снижается скорость работы приложение. Ну этот пункт думаю вообще учитывать нет смысла с учетом мощностей которые теперь доступны. И плюсов которые она предоставляет.
885199
#353 #885199
>>885181

>>>если у тебя нет интерфейса для её редактирования


>>885188

Вот этого и не понимаю. Испорчу через интерфейс
Спорно это всё как-то. Делаю только лабы и не могу понять её плюсов.

>>885186
Struct например
885201885215
#354 #885201
>>885199

>Struct


Там тоже есть инкапсуляция.
885204
#355 #885204
>>885201
По умолчанию public
#356 #885208
>>885149
Помогите кто-нибудь. Нигде же нет примера такого.
#357 #885212
Двач,есть у меня комобобкс. В пропертис я в items добавил допустим две строчки. Как мне присвоить индекс к этим строчкам. Типа у первой строки индекс=0 у второй индекс=1?
885233
#358 #885213
>>885186
Чего?
У меня в классе 3 переменные х, игрик, зет. Они публичные, делай с ними что хочешь. Это не класс по-твоему?
885219
#359 #885215
>>885199

> Вот этого и не понимаю. Испорчу через интерфейс


> Спорно это всё как-то. Делаю только лабы и не могу понять её плюсов.


Плюсы только если твой код будут другие люди юзать, так удобнее просто обычно - они же вообще не знают что ты там напилил и с инкапсуляцией на ошибки с меньшей вероятностью наткнуться. А так вообще похуй.
885225
#360 #885219
>>885213
А смысл ими пользоваться без интерфейса?
885225885310
#361 #885222
Есть одна байтоёбская функция с циклом for (size_t i = buf_size; i > 0; i -= 4, buffer += 4) и один даун (я).
И вот если на вход прилетает что-нибудь, например с размером 343, т.е. в конце остаётся меньше 4, i улетает в минус но из цикла не выходит.
885238
#362 #885223
>>885179
Когда работает много людей, пользователи твоего класса должны знать, что если они будут использовать все как надо, то ничего не сломается. А ты, в свою очередь, должен знать, что если ты не будешь трогать интерфейс, то тоже никому ничего не сломаешь. Для этого и нужна инкапсуляция - это защита данных, которые автор класса может менять.
#363 #885225
>>885219
Ну вот я тоже об этом думал, но удмал вдруг всё сложнее
>>885215
Динамическое создание объектов
Мне кажется облегчает разработку
885312
#364 #885233
>>885212

>


Бамп
#365 #885238
>>885222
А, всё.
int i = buf_size; i > -1
#366 #885249
>>884281
Спасибо конечно, но по сути мне нужно самому реализовать вектор. Сортировку реализовать не проблема, плюс по заданию это не кусорт. Шаблоны мне пока не нужны.
#367 #885265
>>885149
Бамп. Как изолировать пространства имён членов класса? Подсказали вместо неймспейса использовать полностью публичный класс состоящий только их статических функций, но это костыльно выглядит
885276
#368 #885273
>>885179

>Аноны для чего нужна инкапсуляция?


Чтоб класс было невозможно использовать в многопоточной среде, т.к. неизвестно, какие сайд-эффекты у вызова метода.

> Не Совсем понимаю выгоды сокрытия переменных и функций если доступ к ним осуществляется через всякие интерфейсы.


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

Но всякие дебилы учат, что нельзя иметь класс Point с открытыми полями x, y, z, а нужно присобачить к ним геттеры и сеттеры. Вот это уже не ООП, а ООП головного мозга.
Благо, в C++ последнее не очень распространено, тогда как в среде Java-макак...
885313
#369 #885276
>>885265
Вот как здесь надо только с неймспейсами. Добавил чисто виртуальный деструктор чтобы объект этого класса создать нельзя было.
http://ideone.com/PkoAwG
#370 #885277
>>882251
На 77 странице начинается глава "Мир в ореховой скорлупке", эпиграфом к которой Хокинг выбрал слова Гамлета из Акта 2, Сцены 2.

"Гамлет: О боже, я бы мог замкнуться в ореховой скорлупе и считать себя царем
бесконечного пространства, если бы мне не снились дурные сны".

В начале главы Хокинг рассуждает о том, что мог иметь в виду Гамлет, упомянув ореховую скорлупу.
885284885305885941
#371 #885284
>>885277

>Хокинг


>Гамлет


Квинтэссенция долбоебов
885319
#372 #885305
>>885277
yoттс в "эхопраксии" тоже выбрал эпиграфом к одной из глав
885308
#373 #885308
>>885305
это модный англопидерский эпиграф
#374 #885310
>>885219
Лол, ты о чём? Ты уверен что ты сам понимаешь что это и зачем надо?
Какая разница govno.x или govno.x(); ???
Какая разница govno.setX(123) или govno.x = 123 ???
Как это в чём смысл? Чтобы получать или изменять значение, нет? А ещё предположим в этом классе есть всякие методы типа нормалайз и + и ещё дохуя чего.
Получается у нас есть охуенный класс вектор, который при этом не инкапсулирует внутренее представление своих данных. Ну и что теперь?
А вот если бы был какой-нибудь
class Yoba {
public;
rofl * kakoetoGovno;
...
}
и при этом kakoetoGovno по должно изменяться только внутри класса для каких-то своих хитрых и коварных планов, тот тут инкапсуляция пригодится.
А то ты напишешь либу(или просто с кем-то что-то будешь пилить), а васян напрямую обратится к kakoetoGovno и изменит значение там, в результате все остальные методы этого класса которые работали с kakoetoGovno будут работать не так как рассчитано. А потом он тебе напишет что плохо зделали тупо, надо ещё разбираться(=тратить время) как автор че там сдеалал, что ему пришлось полчаса искать ошибку, а не просто без задней мысли использовать. По идее как-то так.
#375 #885312
>>885225

>Динамическое создание объектов


>Мне кажется облегчает разработку


Ты понимаешь что ты пишешь? Я не могу динамически создавать объекты класса с открытыми полями?
885632
#376 #885313
>>885273
Ну я жаву только с libgdx юзал.
Там всё как надо
http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/math/Vector3.html
#377 #885319
>>885284
факт в том, что ребята выше жиденько обосрались
#378 #885356
>>885149
Бамп
239 Кб, 2000x1333
#379 #885387
>>881172 (OP)
Очень хочу найти анона, который будет мне годным наставником по С/С++ и, возможно, Qt в дальнейшем. Чтобы раз в N дней связываться с ним и задавать глупые вопросы, которые трудновато сформулировать для Stackoverflow и гугла. Или когда не хочется палить код. Пока, думаю, нужно это будет нечасто, да и скорость ответов не важна. Ну и вообще, годного анона хорошо бы. Чтобы советовал умные вещи и объяснял, где я на этот раз накосячил. В любом удобном формате - почта, скайп, телега, вк. Если не здесь, то где поискать таких?
885394
55 Кб, 540x450
#380 #885393
Быдлокодил тут на куте и внезапно наткнулся на подобное блядство:

#include <QtGui/QApplication>
#include <QtSql>
#include <QTableView>

int main(int argc, char argv[])
{
QApplication app(argc, argv);
// обьявляем базу
QSqlDatabase dbase;
// коннектимся
dbase = QSqlDatabase::addDatabase("QSQLITE");
dbase.setDatabaseName("baza.db");
// гуй для отображения
QTableView view;
// модель для вью
QSqlTableModel model;
// каким ХУЕМ модель знает из какой базы брать таблицу 666 и селектить?
model.setTable("table666");
model.select();

view.setModel(&model);
view.show();

return app.exec();
}

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

QSqlDatabase dbase;
dbase = QSqlDatabase::addDatabase("QSQLITE");
dbase.setDatabaseName("baza.db");

QSqlQuery a_query;

QString str_insert = "INSERT INTO table666(number, address) VALUES (%1, '%2');";
QString str = str_insert.arg("14").arg("hello world str.");
bool b = a_query.exec(str);

Чо за нах? То есть я могу написать чудо-класс-сумматор типа:

int a = 1;
int b = 2;
int c = 3;

Sumoist fuckit;
int sum = fuckit.sumAll();
// и будет sum == 6


Как такая белиберда возможна? Я конечно допускаю, что переменная обьявленная ниже может неким магично-научным способом знать о переменной, обьявленной выше. Но как заставить чтобы QSqlQuery, обьявленный в методе класса, "увидел" базу QSqlDatabase, обьявленную как поле класса, инициализированную и подключенную в конструкторе класса.

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

import sqlite3

con = sqlite3.connect('users.db')
cur = con.cursor()
cur.execute('CREATE TABLE users (id INTEGER PRIMARY KEY, firstName VARCHAR(100), secondName VARCHAR(30))')
con.commit()
cur.execute('INSERT INTO users (id, firstName, secondName) VALUES(NULL, "Guido", "van Rossum")')
con.commit()
print cur.lastrowid

cur.execute('SELECT
FROM users')
print cur.fetchall()
con.close()
55 Кб, 540x450
#380 #885393
Быдлокодил тут на куте и внезапно наткнулся на подобное блядство:

#include <QtGui/QApplication>
#include <QtSql>
#include <QTableView>

int main(int argc, char argv[])
{
QApplication app(argc, argv);
// обьявляем базу
QSqlDatabase dbase;
// коннектимся
dbase = QSqlDatabase::addDatabase("QSQLITE");
dbase.setDatabaseName("baza.db");
// гуй для отображения
QTableView view;
// модель для вью
QSqlTableModel model;
// каким ХУЕМ модель знает из какой базы брать таблицу 666 и селектить?
model.setTable("table666");
model.select();

view.setModel(&model);
view.show();

return app.exec();
}

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

QSqlDatabase dbase;
dbase = QSqlDatabase::addDatabase("QSQLITE");
dbase.setDatabaseName("baza.db");

QSqlQuery a_query;

QString str_insert = "INSERT INTO table666(number, address) VALUES (%1, '%2');";
QString str = str_insert.arg("14").arg("hello world str.");
bool b = a_query.exec(str);

Чо за нах? То есть я могу написать чудо-класс-сумматор типа:

int a = 1;
int b = 2;
int c = 3;

Sumoist fuckit;
int sum = fuckit.sumAll();
// и будет sum == 6


Как такая белиберда возможна? Я конечно допускаю, что переменная обьявленная ниже может неким магично-научным способом знать о переменной, обьявленной выше. Но как заставить чтобы QSqlQuery, обьявленный в методе класса, "увидел" базу QSqlDatabase, обьявленную как поле класса, инициализированную и подключенную в конструкторе класса.

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

import sqlite3

con = sqlite3.connect('users.db')
cur = con.cursor()
cur.execute('CREATE TABLE users (id INTEGER PRIMARY KEY, firstName VARCHAR(100), secondName VARCHAR(30))')
con.commit()
cur.execute('INSERT INTO users (id, firstName, secondName) VALUES(NULL, "Guido", "van Rossum")')
con.commit()
print cur.lastrowid

cur.execute('SELECT
FROM users')
print cur.fetchall()
con.close()
885395
#381 #885394
>>885387

>Qt


Хм. Мда.
Впрочем, могло быть и хуже.

>почта


mG(FudakvkubeANUSmaiW jlPUNCTUMrx4Mu
885396
sage #382 #885395
885398
sage #383 #885396
>>885394

>>Qt


global variables, global variables everywhere :-)
885399885408
#384 #885398
>>885395
пиздануццо, а в конструкторе:
QSqlTableModel(QObject *parent = 0, QSqlDatabase db = QSqlDatabase());

// нихуя не пашет:
this->dbModel = new QSqlTableModel(0, this->db);
#385 #885399
>>885396
это каким уем она глобальна? просто обьявлена в том же scope
885403885407
sage #386 #885403
>>885399
Read The Fucking RTFM уже!

> If db is not specified, or is invalid, the application's default database is used.


Откуда оно берёт application's database, если не из глобальной переменной где-то в кишках Qt?
sage #387 #885407
>>885399

>это каким уем она глобальна?


http://doc.qt.io/qt-4.8/qsqldatabase.html#addDatabase
http://doc.qt.io/qt-5/qsqldatabase.html#addDatabase

> QSqlDatabase QSqlDatabase::addDatabase(const QString &type, const QString &connectionName = QLatin1String( defaultConnection ))


> If connectionName is not specified, the new connection becomes the default connection for the application, and subsequent calls to database() without the connection name argument will return the default connection.

#388 #885408
>>885396
Я знаю что параша, но в определенных областях все прочее - еще хуже.
#389 #885410
std::vector<unsigned char> myVector;
Что компилятору не нравится? Типа некорректно.
std::vector<char> myVector;
тоже не ок.
#include <vector> сделал.

А тут что не так? Ошибок не вызывает, но работать тоже не хочет - хуй вместо содержимого переменной.
void encrypt(string s1, string s2, string &res)
{
for (int i = 0; i < s1.length(); i++) {
res = (s1.c_str()) ^ (s2.c_str());
}
}
885415885421885612
#390 #885415
>>885410

>А тут что не так?


Все не так.
В первую очередь - в ДНК.
885416885421
sage #391 #885416
>>885415
i в квадратных скобках проебалась движком.
885417
#392 #885417
>>885416
Жизнь у тебя проебалась, долбоеб.
Че за res =, баран.
Там как минимум += - хотя тоже кривое говно, конечно.
885420
sage #393 #885420
>>885417

> Че за res =, баран.


Я вообще не автор, хули ты доебался? Таблеток прими.
885427
#394 #885421
>>885415
Не в ДНК, а в макабе.
http://ideone.com/LWAFQt
>>885410
885422885612
sage #395 #885422
>>885421
Нафиг c_str()? Делай reserve() для res.
885425885438
#396 #885425
>>885422
В смысле "нафиг"? Потому что не хочет оперировать символами в стиле С++ ксор, а обычными оперирует.

>Делай reserve() для res.


Зачем, он же автоматически расширяется.
885427
#397 #885427
>>885420
Нахуй иди, значит.
>>885425
Анус твой автоматически расширяется, пидорасина.
#398 #885428
Вообще хуже говна нет чем строки в крестопараше разве что весь std, хаха
885430885431
sage #399 #885430
>>885428
Эх, сейчас бы писать кроссплатформенный, быстрый и красивый софт на чем-то кроме крестопараши, писать ААА-игрушки на чем-то кроме крестопараши, писать дрова, системные утилиты и сами операционные системы, программировать микруху на чем-то кроме крестопараши.
885434885435
sage #400 #885431
>>885428
Везде, где я видел, строки ебанутые, кроме как в Rust. Они единственные, кого я знаю, понимают, что у строки не должно быть доступа по индексу.
885439
sage #401 #885434
>>885430
>>885430

>кроссплатформенный, быстрый и красивый софт на чем-то кроме крестопараши


Софта на крестопараше, где сочетались бы все 3 качества, почти не существует.

> писать ААА-игрушки на чем-то кроме крестопараши


C#

>сами операционные системы, программировать микруху на чем-то кроме крестопараши.


Это и так на 99% не на крестопараше делается.
#402 #885435
>>885430

>кроссплатформенный


Сынок, это фантастика. Тебе в джавапидорам.
Хотя стоп, даже там не все гладко, хехе.

>быстрый и красивый


Тебя за такие кукареки лид голову клавиатурой проломит и выбросит на мороз.
#403 #885436
>>885434

>почти не существует.


>почти


Такой большой - а в сказки веришь.
Хотя если ты учитываешь твою лаба1.срр - то да.
885437
sage #404 #885437
>>885436
Чего рвёшься-то, кресторебёнок?
(Автор этого поста был предупрежден.)
885441
#405 #885438
>>885422

>Делай reserve() для res.


Нихуя не поменялось.
>>885434
Браузеры те же, чем тебе не софт? KDE то же, в прошлом вроде скайп и софт адобы.
>>885434

>C#


Юнити - не ааа. И игр таковых (йобы) на нем нет. А в CryEngine/UE вроде как С++
Вообще, у вас тут какое-то буйство сегодня, зайду попозже.
885444
#406 #885439
>>885431

>у строки не должно быть доступа по индексу.


Это называется не осилили UTF8/16
Хотя да, задачка интересная - не для дебилов.
885443
#407 #885441
>>885437
>>885433
Угомонись, програмист на пхп.
sage #408 #885443
>>885439
Наоборот, любой, кто осилил utf8, понимает, что обращение по индексу это долбоебизм.
885446
sage #409 #885444
>>885438

> KDE то же


ПЛАЗМА НЕ ПАДАЕТ!!!
#410 #885446
>>885443

>что обращение по индексу это


Сложная задача, ибо подразумевает частичную быструю распаковку.
Быдлу не положено, так-то.
#411 #885447
Вопрос, скорее, по C, но всё же.

Есть, скажем, char массив из 11 элементов:
unsigned char data[11] = {75, 101, 110, 110, 101, 100, 121, 22, 11, 7, 171};
И структура
struct MyStruct {
char n[7];
char d;
char m;
unsigned short y;
};

Собственно, можно ли её инициализировать в, эм, одну команду? Ну, то есть, как-то так магически struct MyStruct s(data), чтобы компьютер просто взял и распихал данные из массива по нужным ячейкам нужного размера?

Если так нельзя, то хоть можно как-то указать длину массива, а не писать целиком каждый отдельный элемент, вроде
struct MyStruct s = { {data[0], data[1], ...., data[6]}, data[7], data[8], (unsigned short )&data[9]};
?

Мне как-то это виделось очевидным применением структур для приведения каких-то сериализованных данных в нормальным вид, а тут оказывается, не только не знаю, как это сделать, но и можно ли вообще, так как не гуглится нифига.
#412 #885448
>>885447

>unsigned char data[11] = {75, 101, 110, 110, 101, 100, 121, 22, 11, 7, 171};


unsigned char data[11] = {75, 101, 110, 110, 101, 100, 121, 22, 11, 171, 7};
то есть.
sage #413 #885449
>>885447
memcpy или placement new
в зависимости от
885456
sage #414 #885450
>>885447

>приведения каких-то сериализованных данных в нормальным вид


Обычно это делается сложнее.
885452
#415 #885452
>>885450
Если сериализация бинарная - то нихуя не сложнее.
И вернись уже в пыхыпытред.
#416 #885456
>>885449
Ты имеешь в виду только для массива memcpy делать? Потому что memcpy(•s, dat, 11); ведь не сработает, адреса элементов не подряд идут.
885457885458
#417 #885457
>>885456

>адреса элементов не подряд идут.


Ты скозал?
885461
sage #418 #885458
>>885456

>адреса элементов не подряд идут


Ну так и (unsigned short )&data[9] может обломиться на endianness.
Весь вопрос получения структуры из массива упирается в то, как этот массив был получен из структуры (и был ли)
885460885461
sage #419 #885459
>>885447

>Собственно, можно ли её инициализировать в, эм, одну команду?


Если обмазаться шаблонной магией как тут https://www.youtube.com/watch?v=abdeAew3gmQ , то может и можно.
885466
#420 #885460
>>885458

>на endianness.


Нет такого вообще, потому что нет ничего кроме интела.
Смирись, дегенерат СПОшный.
#421 #885461
>>885457
Я проверил. между char m и unsigned short y (в моём случае, по крайней мере) стабильно один байт пропускается, из-за чего всё сбивается.

>>885458

>Ну так и (unsigned short )&data[9] может обломиться на endianness.


Предположим, тут всё работает и они чудесным образом совпадают.

>как этот массив был получен из структуры (и был ли)


Неизвестно, байты по сети получены. Это просто заголовок файла определённого формата, где представлена изначальная информация.
885462
#422 #885462
>>885461

>стабильно один байт пропускается


То есть ты даже посчитать байты не способен, и четное от нечетного не отличаешь.
Тебе в пхп-загон.
885464
#423 #885464
>>885462
Чё ты нервный такой? Я не понимаю, ты что, не согласен с тем, что memcpy(•s, data, data_len) не всегда работает, потому что адрес элемента может не быть адрес_предыдущего + размер_предыдущего, как в массивах?
885468
#424 #885466
>>885459
Короче, то, чего я хочу, стандартными сишными средствами сделать нельзя, нужно руками всё выставлять, я правильно понимаю?
885469
#425 #885468
>>885464

>не всегда работает


Всегда работает если все сделать правильно.
/лекция
Гуляй, Вася, свободен.
885472
#426 #885469
>>885466

>я правильно понимаю?


Нет.
885472
#427 #885472
>>885468>>885469
Блядь, ну так объясните как или ссылку на мануал/туториал/лекцию/главув книге дайте, я ж поэтому и пришёл, что не знаю.
885474
#428 #885474
>>885472
Впрочем, хуй с вами, сам разобрался.
885477
#429 #885477
>>885474
Хотя спасибо-таки стоит сказать, пара фраз натолкнула на некоторые мысли и другие поисковые запросы.
249 Кб, 681x241
#430 #885605
>>881172 (OP)
перекатывайтесь в SQL.

https://www.youtube.com/watch?v=bIWLBM-F-YA
885610
#431 #885610
>>885605
Да нахуя, Леночка наша. Хотя если ты ридер...
885621
#432 #885612
>>885410
Бамп вопросу
>>885421
Тут код, не съеденный макабой.
#433 #885621
>>885610

>ридер


Пидер*
#434 #885632
>>885312

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


Я такого не писал
#435 #885683
>>885434

>>C#


Можешь назвать хоть одну игру на нём?
885695
#436 #885695
>>885683
рим ворлд
885704885817
sage #437 #885704
>>885695
Хуя се ААА-йоба мыльцо с графином, Габен плачет и смеется
Мимо
203 Кб, 1200x1600
#438 #885756
Есть здеся Qt-бляди? Как мне вывести список с прокруткой, состоящий из QPushButton и rich текста? Если бы не было кнопок, я бы просто положил в QTextBrowser эти строчки и дело с концом, но у меня в каждой пятой строке кнопка должна быть.
885758902596
#439 #885758
>>885756
Qt 5.5.1 если что
161 Кб, 1200x801
Какой-то сишный лошара жалуется на судьбу #440 #885773
Какой-то сишный лошара жалуется на судьбу:

http://keinkeinkein.livejournal.com/139068.html?thread=3068476#t3068476

Для начала тебе нужно не распыляться, а выбрать одно из нескольких десятков направлений. Мир не ограничивается системным программированием, тебе не обязательно шагать по моим стопам. Направлений/стеков куча, выбирай сам. Выбери что-то одно, что-то узкое и выучи полностью теорию. Везде можно найти свое место, главное - не бояться, не тупить. Ближе к концу 13-го года я случайно увидел одну вакансию в разделе "Careers" одной компании из США, написал на почту, рассказал о себе. Было 3 интервью с интервалом в неделю. Первое - час просто пообщались по Hangouts на свободные темы. Второе - техническое, прощупывали почву, заодно спрашивали всякую хрень типа всех деталей работы OOM killer и шареной памяти. Третье - уже по файловым системам и ядерным потрохам. Подписал контракт, год отработал на фулл-тайме. Было тяжело, я уставал и примерно весной стал активно принимать таблетки xanax и prozac из аптек. Но это уже оффтопик. За весь 14-й год я поставил цель не потратить ни копейки (жил на сбережения), а весь доход за год складывать в условную копилку. В сумме вышло чуть более семидесяти килобаксов. Проект - не могу много рассказывать, но в общем это была распределенная децентрализованная отказоустойчивая проприетарная ФС под Linux, ядерный модуль и юзерспейсный софт. Я за год еще одну квартиру в городе купил в очень хорошем якобы престижном кирпичном VIP-доме (на последнем этаже, я только на последних покупаю в последнее десятилетие), но в убогом районе (напоминаю, в Воронеже всего 6 районов, и все 6 - белые гетто). Квартал - 4 дома - был вполне приличным, но дальше советские 9-этажки за ним стояли, гетто с люмпенами. Была мысль переехать жить в этот дом, но потом один раз поздно в пол 12-го ночи меня избили там во дворах, не понравилось местной шпане как я в упор на двуногую 30-летнюю агрессивную пьяную свинью-переростка в спортивном костюме посмотрел глаза-в-глаза, у них это атакой/наездом считается. Не ограбили, просто запинали толпой. Потом заявление писал. Короче, вполне реально тебе примерно тем же самым заниматься и перестать зависеть от государства. Но сразу скажу, ты бы даже первое интервью не прошел, тебя бы зачморили из-за английского. Нужно его хорошо знать, так, чтобы менеджер не напрягал свой слух и не замедлял свою речь, подстраиваясь под русского Ваньку. При этом нужно помнить:

- На серьезных проектах будешь единственным в команде, кто владеет русским языком. Никто не будет помогать, разжевывать, делать за тебя. Придется читать тонны манов и PDF'ок. Придется постоянно общаться голосом и текстом с теми, кто принципиально не будет переходить на симпл-инглиш из-за тебя.

- Многие задачи будут одновременно сложными, скучными и унылыми.

- Нельзя распиливать бюджет и тупить, если долго дебажишь race hazard - ставь в известность менеджера. Нужно работать с максимальной отдачей, эффективностью.

- Нужен самоконтроль, будешь сам управлять своим временем.

Я искренне хочу тебе помочь, но не знаю даже, как тебе вкатиться на рынок. Сразу скажу, избегай всяких бирж, галер и всех сервисов, где тебя покупают за X, а продают за 2X. Работай всегда напрямую на конкретного американца-менеджера конкретного проекта конкретной компании, который тебе платит, считает твою эффективность и метрики. Это самый выгодный вариант. Во всех остальных вариантах (русский тимлид, русский менеджер, аутсорсинговая фирма-прокладка) ты никогда столько в год не заработаешь, это абсолютно тупиковые пути для русского программиста. А как тебе вкатиться - сложно сказать, но попробуй, выучив теорию, найти какой-нибудь open source-проект, связанный с конкретной компанией. Не зацикливайся на системном программировании, у тебя может быть свой путь. Найди любой открытый проект, такой, чтобы какую-то библиотеку/ядро/модуль разрабатывала и курировала американская IT-компания, чтобы проприетарный проект базировался на открытом ядре. Скачай себе этот проект (git clone), изучи его, посмотри фич-реквесты, баги, исправь штук 5 и запили пару фич, а потом пиши на мыло американскому менеджеру проекта, что ты сделал то-то и то-то и хочешь контрактором поработать с испытательным сроком. Тебя возьмут. Готовься к тому, что в первый год твой годовой доход будет низким, но он будет в разы (!) больше годового дохода учителя физики из сельской школы (или кто ты там, забыл).

Конец цитаты
161 Кб, 1200x801
Какой-то сишный лошара жалуется на судьбу #440 #885773
Какой-то сишный лошара жалуется на судьбу:

http://keinkeinkein.livejournal.com/139068.html?thread=3068476#t3068476

Для начала тебе нужно не распыляться, а выбрать одно из нескольких десятков направлений. Мир не ограничивается системным программированием, тебе не обязательно шагать по моим стопам. Направлений/стеков куча, выбирай сам. Выбери что-то одно, что-то узкое и выучи полностью теорию. Везде можно найти свое место, главное - не бояться, не тупить. Ближе к концу 13-го года я случайно увидел одну вакансию в разделе "Careers" одной компании из США, написал на почту, рассказал о себе. Было 3 интервью с интервалом в неделю. Первое - час просто пообщались по Hangouts на свободные темы. Второе - техническое, прощупывали почву, заодно спрашивали всякую хрень типа всех деталей работы OOM killer и шареной памяти. Третье - уже по файловым системам и ядерным потрохам. Подписал контракт, год отработал на фулл-тайме. Было тяжело, я уставал и примерно весной стал активно принимать таблетки xanax и prozac из аптек. Но это уже оффтопик. За весь 14-й год я поставил цель не потратить ни копейки (жил на сбережения), а весь доход за год складывать в условную копилку. В сумме вышло чуть более семидесяти килобаксов. Проект - не могу много рассказывать, но в общем это была распределенная децентрализованная отказоустойчивая проприетарная ФС под Linux, ядерный модуль и юзерспейсный софт. Я за год еще одну квартиру в городе купил в очень хорошем якобы престижном кирпичном VIP-доме (на последнем этаже, я только на последних покупаю в последнее десятилетие), но в убогом районе (напоминаю, в Воронеже всего 6 районов, и все 6 - белые гетто). Квартал - 4 дома - был вполне приличным, но дальше советские 9-этажки за ним стояли, гетто с люмпенами. Была мысль переехать жить в этот дом, но потом один раз поздно в пол 12-го ночи меня избили там во дворах, не понравилось местной шпане как я в упор на двуногую 30-летнюю агрессивную пьяную свинью-переростка в спортивном костюме посмотрел глаза-в-глаза, у них это атакой/наездом считается. Не ограбили, просто запинали толпой. Потом заявление писал. Короче, вполне реально тебе примерно тем же самым заниматься и перестать зависеть от государства. Но сразу скажу, ты бы даже первое интервью не прошел, тебя бы зачморили из-за английского. Нужно его хорошо знать, так, чтобы менеджер не напрягал свой слух и не замедлял свою речь, подстраиваясь под русского Ваньку. При этом нужно помнить:

- На серьезных проектах будешь единственным в команде, кто владеет русским языком. Никто не будет помогать, разжевывать, делать за тебя. Придется читать тонны манов и PDF'ок. Придется постоянно общаться голосом и текстом с теми, кто принципиально не будет переходить на симпл-инглиш из-за тебя.

- Многие задачи будут одновременно сложными, скучными и унылыми.

- Нельзя распиливать бюджет и тупить, если долго дебажишь race hazard - ставь в известность менеджера. Нужно работать с максимальной отдачей, эффективностью.

- Нужен самоконтроль, будешь сам управлять своим временем.

Я искренне хочу тебе помочь, но не знаю даже, как тебе вкатиться на рынок. Сразу скажу, избегай всяких бирж, галер и всех сервисов, где тебя покупают за X, а продают за 2X. Работай всегда напрямую на конкретного американца-менеджера конкретного проекта конкретной компании, который тебе платит, считает твою эффективность и метрики. Это самый выгодный вариант. Во всех остальных вариантах (русский тимлид, русский менеджер, аутсорсинговая фирма-прокладка) ты никогда столько в год не заработаешь, это абсолютно тупиковые пути для русского программиста. А как тебе вкатиться - сложно сказать, но попробуй, выучив теорию, найти какой-нибудь open source-проект, связанный с конкретной компанией. Не зацикливайся на системном программировании, у тебя может быть свой путь. Найди любой открытый проект, такой, чтобы какую-то библиотеку/ядро/модуль разрабатывала и курировала американская IT-компания, чтобы проприетарный проект базировался на открытом ядре. Скачай себе этот проект (git clone), изучи его, посмотри фич-реквесты, баги, исправь штук 5 и запили пару фич, а потом пиши на мыло американскому менеджеру проекта, что ты сделал то-то и то-то и хочешь контрактором поработать с испытательным сроком. Тебя возьмут. Готовься к тому, что в первый год твой годовой доход будет низким, но он будет в разы (!) больше годового дохода учителя физики из сельской школы (или кто ты там, забыл).

Конец цитаты
7024 Кб, 320x236
#441 #885794
>>881172 (OP)
Господа, смотрите какая хуйня мне нужна:

Есть обьект, у него внутри уникальный айди и данные.
Для обьектов нужен пул, в котором элементы расположены последовательно, как в векторе. Элементы вместо удаления помечаются как неактивные.
В пуле нужен итератор по активным элементам.
И вместе с этим нужна возможность по айди получить стабильный указатель на элемент, который не проебётся, например, при ресайзе пула.

Это вообще физически реализуемо?
#442 #885799
>>881172 (OP)
Аноны, зачем нужен спп если есть петон?
885824
#443 #885817
>>885695

>рим ворлд


И правда годнота, но дауны и дальше будут отрицать очевидное превосходство C# над CPP
#444 #885824
>>885799
Это как Андроид и Apple
CPP это как Apple дань моде и ненужные понты
#445 #885836
std::vector<unsigned char> myVector;
Что компилятору не нравится? Типа некорректно.
std::vector<char> myVector;
тоже не ок.
#include <vector> сделал.

А тут что не так? Ошибок не вызывает, но работать тоже не хочет - хуй вместо содержимого переменной.
http://ideone.com/LWAFQt
885842
#446 #885842
>>885836
Векторы в одной программе?
886010
#447 #885857
>>884529

> // что выведется тут???


> std::cout << x + 3 << std::endl;


0x6000000c, лол.
#448 #885869
>>885434
Ну по такой логике вм шершавого — кривое говно, ибо написана внезапно на... плюсах.
885894
#449 #885894
>>885869
А эта ВМ сильно снижает производительность?
#450 #885941
>>885277

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



А книга вся про такую концепцию или нет?
Или может Хокинг так обыграл выражение in a nutshell и in nutshell?
#451 #885942
Пиздец в новом стандарте поехавший рандом. Чтобы вызвать функцию рандома нужно новый объект движка создавать. Его ещё хранить надо не забыть. Как можно рандом одной строчкой сделать?
885949885951
#452 #885949
>>885942
int true_rand() { return 0; }

Вызывать одной строчкой: true_rand();

Вот тебе не-поехавше.
#453 #885951
>>885942

> Его ещё хранить надо не забыть.


Тебе замыкания ("лямбды") для чего завезли?

Можешь хоть одной строчкой (длинной) создавать замыкание, создавая и сохраняя генератор+распределение в capture list.
885952
#454 #885952
>>885951
И каждый раз вызывая лямбду создавать новый генератор? И заново смотреть время?
885953
#455 #885953
>>885952
При вызове ничего не будет создаваться.
885955
#456 #885955
>>885953
Пример покажи.
885959
129 Кб, 523x604
sage #457 #885958
Посоветуйте лит-ры для начального изучения.
885965885966
#458 #885959
>>885955
auto gen_index = [prng=std::mt19937(std::random_device{}()),distr=std::uniform_int_distribution<size_t>{0, N-1}]() mutable { return distr(prng); };
885972
#460 #885965
>>885958
Хорнак Дж. П. Основы МРТ (1996—1999 г.) http://www.cis.rit.edu/htbooks/mri/inside-r.htm
885968
#461 #885966
>>885958
Мэнсфилд П. Быстрая магнитно-резонансная томография file:///home/wolfram/downloads/nob0510c.pdf
885967
sage #463 #885968
>>885965
Не знаю как реагировать.
#464 #885972
>>885959

> sizeof(gen_index)


> 2508


Я его хранить не буду
885974885977885979
#465 #885974
>>885972
Это из-за std::mt19937.
Какая тебе разница, где его хранить, отдельно или в замыкании.
885978
#466 #885977
>>885972
Ну если хочешь рандом похуже, замени на std::minstd_rand
885979
#467 #885978
>>885974
Я а так уже засрал свой класс. Ещё 2 объекта сделают его ещё уродливее. Проще юзать сишный рандом. Вот зачем все внутренности нужно было нарушу вынимать?
885981
#468 #885979
>>885972
>>885977
В смысле, если хочешь поменьше размером ценой рандома похуже.
885980
#469 #885980
>>885979
Я хочу одну функцию которая не занимает память пока её не вызвать. Сама идей хранить генератор не годится.
885983
#470 #885981
>>885978

> Проще юзать сишный рандом.


Ни для чего серьёзного он не подходит.

> Вот зачем все внутренности нужно было нарушу вынимать?


Чтоб контролировать соотношение качество/производительность. И были какие-то гарантии реального рандома (random_device)
#471 #885983
>>885980
Нет, ну можешь хранить только распределение, а генератор, получать параметром.
#472 #885985
Двачик, есть у меня
textBox5->Text = Convert::ToString(0,123456)
Как мне сделать чтобы пола 4 знака после запятой?
885997886004886007
#473 #885997
>>885985
было*
#474 #886004
>>885985
char s[8];
auto v = 0.123456;
std::sprintf( s, "%.4f", v );

Например.
886012
#475 #886007
>>885985
inline std::string to_precise_string(double num, unsigned precision)
{
   std::stringstream stream;
   stream << std::fixed << std::setprecision(precision) << num;
   return stream.str();
}
886012
#476 #886010
>>885842
Да, ессно.
#477 #886012
>>886007
>>886004
Мне результат в textbox поместить надо в проекте widows forms
886022
19 Кб, 265x292
#478 #886022
>>886012

> widows forms


> CLI/C++

sage #479 #886044
sage #479 #886044
sage #480 #886045
sage #480 #886045
Рекурсия #481 #886658
Сап, гайс. Читаю Липпмана. Есть задача: вывести содержимое вектора, используя рекурсивную функцию. Так вот, если использовать этот код http://ideone.com/kawfg3, то все работает. Если заменить параметр функции на итератор, то все летит по пизде и компилятор выдает разные результаты в зависимости от содержимого вектора. Ананас, поясни нюфане, где именно мой косяк спрятан. В условии выхода?
#482 #887417
>>883437
upd
Примерно понял, что нужно реализовывать через создание структуры массив из 10 элементов, ссылка на следующий экземпляр.
Но как упростить работу с индексом элемента? Можно ли создавать методы для структуры?
887421
#483 #887421
>>887417

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


Можно. Структуры это классы в C++, просто с public доступом к членам по-умолчанию.
#484 #887487
>>884200
Не пизди. Залазишь на хедхунтер, вбиваешь вакансию быдлокодера С++, и изучаешь стек технологий, в основном это stl/boost/QT, ну и знание основных алгоритмов
904606
#485 #892489
Сап. У меня есть очередь, состоящую из объектов класса classA, которую нужно заполнить из файла при инициализации. Я использую динамический массив, но не могу разобраться до конца как это делать, помогите пожалуйста
892494
sage #486 #892493
Что с этим некротредом? Куда делась часть постов?
893131
#487 #892494
>>892489
Вась, ред уже 2 раза перекатили, сюда пиши https://2ch.hk/pr/res/892147.html (М)
893159903881
#488 #893131
>>892493
Модераторы почистили посты мамкоёбов из /b/
893148893159
#489 #893148
>>893131
Лучше б шапку сделали, редиски.
893159
#490 #893159
>>893131
Удалить спам или перекатить нюфагтред в котором было 2к постов — хуй. Зато почистить сгнивший тред — вот вам.
>>893148
В последнем треде >>892494 запилили шапку, успокойся.
#491 #902314
Анон, подскажи годную литературу по make, чем ты пользуешься? пока не знаю как ее подключить, скачал блокнотик и minGW поковырялся в кишках утилита есть, наверно в консоли что-то прописывать нужно, подскажи годной литературы на русском, еще у меня вопрос, я полностью забыл математику, сложновато вкатиться в дискретную, подскажи годноты.
904607
#492 #902596
>>885756
Проще всего сделать свой виджет из кнопки и label.
Потом используй QListWidget::setItemWidget

Если нужна привязка к данным, или динамический контент, то только черещ ListView и ItemDelegate.
#493 #903866
Бамп годному треду!
903878
sage #494 #903878
>>903866
Успокойся, довн.
sage #495 #903881
Для танкистов: тред передаче сюда >>892494 но моча немножко слоу.
#496 #904554
Бамп годному треду!
904605
sage #497 #904605
>>904554
Нелегетимный бамп.
#498 #904606
>>887487
И на собеседованиях тебе отвечают: мы перезвоним.
sage #499 #904607
>>902314
Там 1,5 команды, из которых 1,4 — это вообще баш. Доки же.
#500 #904608
#501 #904673
Мама больно тестировала тебе в рот! Ты множественное наследование, я твоя мама тестировала тебе в рот.
#502 #922108
Хуй
Обновить тред
Двач.hk не отвечает.
Вы видите копию треда, сохраненную 30 января 2017 года.

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

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