Как много языков, молодящихся снаружи, От старости бегущих в никуда... Вполне понятно: с пропозалами мы дружим, А вот с фичами всегда у нас беда...
Мы нацепляем лямбды, ranged-for, Асинков побольше норовим засунуть в код... И все нам кажется, что мы достойны трелей, И студента в программисте можем разбудить...
Ну, хорошо, коль студент тот рядом, А если он давно уж не студент?... Смешно смотреть, заманивая скоростями, Как приходится идти на беспредел...
И всё равно, что студент - уже бывалый программист: На свой язык он смотрит сквозь стакан, Последнее, что может быть неясно: Когда раскроется вот этот весь обман?...
Быть может утром, в солнечном восходе, Написав подлиннее так шаблон, Проводишь молодость свою ты на пороге, Поймешь: он старости такой не ждал...
А может все закончится в тот вечер, Когда твои UB он разглядит, Не будет ночи написанья кода... Но даже в старости, монады манят нас.
>>881177 Ну не знаю я хачкеля иначе не перекатывал бы этот тред, чо ты прицепился-то? Тот же код без orders на конце как минимум в окемле валиден, хз что тут
В Haskell'e тоже надо всю эту хуйню задекларировать. Или по крайней мере import соответствующие библиотеки. Правда, согласен, что все фичи, которые плюсовцы у хачкиля слизывали имеют ну совершенно невменяемый синтаксис!
>>881172 (OP) Профессионально кожу на С++. Синьер, СПб, 4 года опыта, проект 1 млн строк. Существует с 2005 года. Переписывался, но целиком никогда. С++ лютый калл, просто лютейший. Сервер компилит с -Wall -Werror. Это просто какой-то калл нереальный. Эти суки тупые всё никак не придумают модули. Ебаные модули из джавы. За 15 лет хуй, не сделали. Если выходит так, что один инклюдит другой и тот инклюдит первый, то это ад пиздец. Разгребать. На любой чих - typedef. Не там поставил, где-то нужно - ебись протаскивай. Либы под платформы и ендианы. иф эндиан - хуяк, елс фигак. Гавно ебаное кароч.
>>881188 /0 Нет, но ты все же сходи почитай что такой этот магический &&. Никакой ссылки не возвращается. >>881189 Братан, ну это уже материал для целого треда. Я просто сделал картинку для привличения внимания (и кстати нормально так бахнуло).
>>881193 > Никакой ссылки не возвращается. Да, потому что это говно даже не скомпилируется. http://ideone.com/gVSNI5 > магический && "Магический" он для новых ньюфагов вроде тебя.
>>881196 Это продакшен код. Его проверяют PVS-студией и прочим. Проект знают только 2-3 лида. Остальные вообще не рубят. Когда кода очень много, а поддерживать скорость разработки и гибкость надо, то код превращяется в месиво из указателей (шаредпоинтеров) и интерфейсов. IObjectSetterListenerGetterOnly достаешь и пытаешься что-то делать. В IDE не проверить. Только в реалтайме.
>>881197 Да. Чей, вы знаете сами. В ДС2 вариков не много.
>>881203 Я бы с тобой сейчас очень поспорил. Чем выше гибкость - тем выше абстрактность. И самые гибкие вещи в итоге становятся просто дико абстрактными.
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).
>>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.
>>881237 Да насрать на пэинт. Я не обращаю внимания на то, что ты локальную переменную назвал неправильно в return-е или что std::move "забыл". Я про суть.
>>881239 >что std::move "забыл" Код читать умеешь — человеческую речь не умеешь. Суть.
Я так же уже писал почему сделал такую хуйню >>881237 >максимально утрированной вырвиглазистсть но видимо всё же это непростительно. Пойду в окно прыгну.
>>881243 >Сперасофт Слава Богу, ушел!!! Так как зарплату постоянно задерживали. Но, об этом можно догадаться и по предыдущим отзывам работников данной компании. Руководители заинтересованы в своем заработке, а не в вашем процветании. Будут мотать нервы, давать нелогичные задания, лишь бы меньше платить. Никто не станет на вашу сторону, и тем более не войдет в сложившуюся ситуацию. Обещали спорт, как элемент социального пакета. Забудьте, такого вам не видать. Могут вас подставить и без единого сожаления и колебания, уволить. Менеджеры прикрывают косяки друг друга. Их главная задача, не качественно выполнять работу, а прогибаться под начальство. И, конечно же, подлизаться к клиентам компании, дабы те не пошли жаловаться. Одним словом, работников не считают за людей, так дополнительная рабская сила. Которую в любой момент могут заменить, более удобным вариантом…для них конечно.
>>881269 products должна быть функцией, и должна вызываться ко всем элементам списка рекурсивно и возвращать лист, насколько я понял из того кода, так что нет.
анон, что-то я туплю как написать функцию, которая заполняет поля структуры через scanf и как лучше эту функцию принимать, через указатель? http://pastebin.com/3ndaKRfH в VS выделяет book в сканфах и пишет expression must have a class type
Посоветуйте книжку, которая научит меня легко и приятно пользоваться C++ в новом проекте без легаси. Чтобы программировать как нормальный человек с лучшими практиками на 2016 год, без троллинга.
Писал раньше на C++ в КБ студентом, но в основном это были древние стандарты да и глупый я был.
>>881433 Сам таким был. Липмана читай, не делай заданий, потом просмотри Майерса (эфективные кресты и эфективный стл). Далее что-то о проэктировании, я нихуя не читал кроме дядюшки Боба, потому я и вечный джун (хотя и мидлом числюсь).
>>881396 >Вон результат этого Наоборот, это результат того, что они пытаются лепить "движок" с абстракциями. Чем больше абстракций, тем больше лапши и говна в итоге, потому что все абстракции протекают.
>>881528 >Чем больше абстракций, тем больше лапши и говна в итоге, потому что все абстракции протекают. Ты блин альтернативу предложи, как лучше писать что-то сложнее laba1
>>881537 Всё лишнее это что? Вот у тебя есть что-то что должно поддерживать кучу форматов, устройств, протоколов и прочее. У тебя будет 100500 интерфейсов по 1000 строк лишь бы это всё заработало. А еще межбиблиотечное взаимодействие и прочее.
>>881538 риалстори, сейчас пишу байндинг к одному движку, реализаций таких движков несколько, у каждой своя архитектура и свои ньюансы, писать абстракцию просто невыгодно, заточенный и протестированый код с одного движка за неделю переносится на другой. нет абстракций, код прост, мал и понятен.
>>881532 >Ты блин альтернативу предложи Рефакторинг и переписывание. Изначально делать код, который легко изменять и переписывать большими кусками. Лепить костыли поверх абстракций, которые устарели - это самый плохой вариант.
>>881553 ну дя, абстракции нужно всеравно допиливать. кстати это же типа абстрактный класс и наследование (я выкатился из крестов, кек) и проблемы теже...
у меня насчет бд вопрос возник. можно чисто теоретически представить реляц. бд без связей вообще? просто огромное количество таблиц, просто манипулируем без задней мысли sqlем. получается, связи нужны только для программиста, чтобы он понял что там к чему? или они нужны для каких-то хитровыебанных операций?
>>881608 Можно вообще всю бд в одну таблицу запихать, в одну колонку и блобом. Только нахуя? > реляционная > без связей Ты можешь не делать явных внешних ключей, но тогда будь уверен, что не выстрелишь себе в ногу. А связи по данным хотя бы ради дедупликации нужны. У нас например вначале было много внешних ключей, но когда архитектура устоялась и код работы с бд перестал трогаться, то ради производительности их отключили.
Есть двумерный масив (вектор векторов). Каждый елемент масива - слово. Каким алгоритмом вывести в файл все возможные комбинакции слов таким образом, что слова из N строчки масива могут идти, только после слов N-1 строчки. То есть 1-2-3 4-5 0 6-7 Дает комбинации: 1406 1407 1506 1507 2406 и тд. Без деревьев никак?
Надо запилить в борланде такую штуку, типа в зависимости от номера нажатой кнопки (1-9) будут выводиться значения из определенных ячеек в stringgrid'е. Допустим, нажата 1 - в label выводятся значения 1,2,5,6 ячейки. Нажата 2 - выводятся значения 3,4,7,8 ячейки. Нажата 3 - выводятся значения 5,6,9,10 ячейки и т.д. Как это осуществить вообще?
Анон, объясни, пожалуйста. В чём профит обходить контейнер используя r-value? Я имею ввиду вот такое: for( auto &&e : entities ) У меня с move-семантикой пока не лады. Всё никак не могу врубиться у неё. Особенно с perfect-forwarding и прочим таким.
Не пойму один момент из книги С. Прата - Язык С++. Лекции и упражнения. А именно: const free_throws & clone (free_throws & ft.) { free_throws pt; pt = ft; // копирование информации return pt; // возврат ссылки на копию } Первый оператор создает безымянную структуру f ree_throws. Указатель pt указывает на эту структуру, таким образом, pt — это сама структура. Создается впечатление, что приведенный выше код возвращает структуру, однако объявление функции отражает, что она возвращает ссылку на эту структуру.
Схуяли так можно делать? Ведь мы объявили, что функция возвращает ССЫЛКУ НА СТРУКТУРУ. Но при этом возвращает просто СТРУКТУРУ...
Во-первых. В объявлении pt не хватает "= new free_throws". Далее по тексту у него написано: "free_throws & jolly = clone(three);", хотя должно быть: "free_throws const & jolly = clone(three);", т.к функция возвращает ссылку на константу. А в следующем абзаце, он перепутал clone() с call(). Во-вторых. pt - это указатель. Разыменование (pt) указателя дает нам ссылку на структуру, а не саму структуру, как он написал. Соответственно, с возвратом из функции всё хорошо.
>>881784 >Такие правила. А где можно узнать эти "правила"? Хотелось бы увидеть этот пункт, где будет написано: "... когда объявляет ссылку на структуру, а возвращаем структуру, то будет возвращаться ссылка, а не объект". А то блядь получается, что читаешь книгу, в ней пишут что нужно возвращать то, что объявлено в прототипе функции. А применяем уличную магию. Почему? Потому что можем себе позволить. Попахивает каким то очень сильным колдунством,а не программированием.
Посоны, есть один бинарь одной корейской дрочильни. В этих файлах хранятся всякие текстуры, картинки, модели и прочее говно. В файлах есть заголовок со всякой инфой, в том числе названия файлов, их оффсеты, размеры и прочее. Так вот, под название там выделено ровно 512 байт, но строки там хранятся как-то ебануто. Не обычная сишная строка с нулём на конце, нет, там нуль после КАЖДОГО БЛЯДСКОГО СИМВОЛА НАХУЙ! Ну вот допустим строка "300" там не "33 30 30 00", а "33 00 30 00 30 00", ну и нулями заполнено в конце свободное место. Собственно вопрос, как эту парашу привести в читаемый вид?
> нужно возвращать то, что объявлено в прототипе функции Ну всё так и есть. У тебя же не возникает вопросов с (int a; int &r = a;). Инициализировали ссылку не ссылкой. Тоже самое с возвратом по ссылке из функции, с тем исключением, что возвращаемый объект должен жить дольше чем тело функции. В нашем случаее мы объект создали на куче, соответственно он живет пока мы выделенную под него память не освободим.
>>881911 > нуль после КАЖДОГО БЛЯДСКОГО СИМВОЛА НАХУЙ! >Ну вот допустим строка "300" там не "33 30 30 00", а "33 00 30 00 30 00" Это называется UTF-16 (лень думать это BE или LE)
> Собственно вопрос, как эту парашу привести в читаемый вид? Ищи про конвертацию utf16->utf8 В стандартной либе есть какие-то codecvt_blah_blah, но их использование геморройно.
>>882033 Еще такой вопрос, в чем отличие явной специализации от экземпляра шаблона?
P.S.: Блядь, ну просто полный пиздос. Я сижу, обложившись бумажными версиями 4го издания (Platinum Edition) и 6го издания. Плюс в электронном виде 5ое издание. А также 4ое, 5ое, 6ое издания в оригинале. Опечаток просто тьма нахуй.
>>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]
Джентельмены, касаемо инструментария. Тут такое дело, я учу с++ используя code::blocks. Кто мне подскажет, как изменить цвет комментариев в редакторе Блядь, ну правда, сейчас бы читать светло-серые комменты на черном фоне, охуенно же
А еще, был бы благодарен, если бы мне подсказали еще, как там изменить цвета фона и остального текста
Я наверное всех заебал, спрошу еще раз. Пикрелейтед - функция для перемещения матрицы 2х2 в зависимости от кнопки на 90 градусов. И теперь для каждой кнопки нужно прописать следующие значения переменных:
>Бьерн Страуструп - Программирование. Принципы и практика использования C++ >Стэнли Липпман, Жози Лажойе - Язык программирования C++ >Стивен Прата - Язык программирования C++ Котаны, посоветуйте с чего лучше начать? С программированием и базовыми конструкциями (if, for, while) знаком. Delphi
>>882109 Да, если все равно что кодить, и область деятельности в целом безразлична - то кресты один из самых поганых вариантов для работы программистом.
>>882171 >Стивен Прата - Язык программирования C++ this
P.S.: Правда стоит заметить, что очень много опечаток и перевод чем дальше (в смысле номера издания), тем хуже. >>882158 >Пикрелейтед - функция для перемещения матрицы 2х2 в зависимости от кнопки на 90 градусов. уже.
>>882197 >Правда стоит заметить, что очень много опечаток и перевод чем дальше (в смысле номера издания), тем хуже. Это вот пиздец конечно. Не первый раз с таким сталкиваюсь в технической литературе. За что только деньги переводчикам платят?..
>>882197 > уже. Что уже-то? Что дальше? Теперь у каждой кнопки что ли прописывать? void __fastcall TForm1::Button1Click(TObject Sender) { row = 0; column = 0; Func(); }
Прога стопится на одном из дальних тестов по причине превышения лимита времени, хотя остальные тесты проходит с близкой к идеальной скоростью.
Все алгоритмы применяемые в коде имеют в наихудшем варианте асимптотику O(logN).
Можно заметить что все тесты до 42 имели количество нод 650 (за исключением самых первых), в то время как в 42 тесте их стало 10к. Судя по всему проблему надо искать в этом направлении.
>>882278 > RAD (от англ. rapid application development — быстрая разработка приложений) — концепция создания средств разработки программных продуктов, уделяющая особое внимание быстроте и удобству программирования, созданию технологического процесса, позволяющего программисту максимально быстро создавать компьютерные программы. >Как-то же это сокращается?
Что, RAD Studio (или её огрызок) не очень способствует быстрой разработке приложений?
Помогите плиз, что-то нихуя не выходит с 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.
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; }; }
>>882757 Ошибки пиши в cerr После for точка с запятой не нужна Не вставляй код на двач u[nU] = x; что ты хотел сделать этой командой? скопировать массив?
Такой вопрос. Есть одна bool переменная, которая используется в потоке A. Я могу поменять её значение в потоке B. Нужно ли мне использовать примитив синхронизации?
Помогите первокуру. С клавиатуры вводится последовательность из N действительных чисел. Вывести все неубывющие подпоследовательности элементов идущих подряд.
Можно ли в крестах запилить рекурсивную структуру. Например реализовать суффиксальное дерево на мапах. Каждый ключ одна буква, а значение новые мапы. Если значение пустое, то это последняя буква. Как такое сделать?
Выручай, анон! Поставил свеженький 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.
>>883409 > amd 8800m > Поставил свеженький OpenCL 3.0 ЛОЛ. Ты правда думаешь, что OpenCL можно взять и "поставить" какой хочешь? Твоя карта только OpenCL 1.2 поддерживает.
>>883430 Бля, а ведь clCreateCommandQueueWithProperties только с OpenCL 2.0. А какого то хуя на старую clCreateCommandQueue студия ругается deprecated. Перекатываться на старую версию сдк?
Ночное программирование. Передо мной поставили в вузе задачу написать класс, объект которого представляет из себя динамический массив, который сортируется одним из своих методов, а также возможностью быстрого поиска. Если нормально переписать тз, то получается: Необходимо реализовать динамический массив чисел с возмножстью поиска и сортировки. Идея реализации: выделяется небольшой (1) массив, по мере его заполнения выделяются такие же, которые связываются в список.(2) Также должны быть следующие методы(их больше, но эти мне непонятны.) Создать массив заданной начальной длины.(В смысле такой длины должны быть мои массивы в (1)?) Удаление элемента по индексу.(Все остальные элементы надо видимо сдвинуть?) Ну и самое непонятное это (2). Что здесь вообще от меня хотят? О каких списках речь и через что их реализовывать? Я вот описал такой список через структуру следующим образом ------------- struct Num_Massive_//один из мини-массивов { Num_Massive_ prest;//ссылка на предыдущий такой массив Num_Massive_ after=Null;//ссылка на следующий double Numb[10];//сами значения } ------------- Понимаю, что с некоторыми вопросами могут быть проблемы, но все же надеюсь на помощь.
>>881172 (OP) Сколько времени нужно дрочить кресты, чтобы получить работу? Исходные данные: линуксовый админ, скрипты на питоне/баше, С уровня универовских лаб, БД на уровне 10 запросов, а что внутре - хз.
>>881192 Зачем вообще нужна толпа программистов на готовый проект? Написал миллион строк и проект готов. Пользуйся. Зачем ещё платить программистам чтобы они его переделывали?
Есть 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 (нет такого файла). Но файл-то есть... Что за хуйня?
Няши, я совсем не понимаю, что не так, и гуголь не помогает. Всё очень просто: у меня есть некий > char letter; и я хочу вводить его через консоль. Но стандартное > cin >> letter; заставляет программу падать. Как это можно победить? Вводить string и конвертировать?
Напишите программу, которая создает файл, состоящий из N строк. В первой строке запишите одну цифру "1", во второй - две цифры "2", и так далее, в строке с номером N - соответствующее число цифр "N", 1 ≤ N ≤ 9.
(Автор этого поста был предупрежден.)
>>884484 Что по твоему такок char* и что написано в документации про cin.get. Почему ты думаешь это должно работать? следующий раз сам себе эти вопросы задай
>>884492 > Что по твоему такок char* Это переменная для одного символа. И она не работает без указателя. Что ты хотел услышать? > что написано в документации про cin.get То, что это альтернатива cin <<, которая является методом вывода данных в консоль. И это не приблизило меня к пониманию проблемы.
>>884503 Никогда не задавался таким вопросом честно говоря. На сколько я помню, он всегда используется с указателем. По крайней мере, у меня ничего без указателя не работало впоследствии.
>>884511 Я и так знаю, что такое укзатели, спасибо. Это переменные, указывающие ( и использующие) память другой переменной. >>884512 > У тебя в ДНК. Ну так этого у каждого. За столько миллионов лет, на земле не осталось ни одного не мутироваашего вида. А вообще, присвоить одну переменную другой я и сам догадался. Разве нет менее костыльно способа? >>884513 Есть, да. Я например в инстиуте учусь, только я не виноват что нам нихуя не объясняют а заставляют пилить ебанутые программы на языке, который я никогда не учил. Нет, чтобы всё как у людей - есть array, есть mutable array. Нет блять, хочу какие-то векторы изобретать. Вектор - это же направленный луч! С какого хуя он стал массивом? Я за сегодняшний день столько новго узнал, что ахуеть.
>>884515 > Вектор - это же направленный луч! С какого хуя он стал массивом? Страуструп пояснял. Типа у него есть длина и отсчёт с нуля, а array занят сишным массивом.
>>884515 >Это переменные, указывающие ( и использующие) память другой переменной. NYET. Это целочисленные переменные, содержащие адрес чего-либо. Или есть ещё адрес + ограничение длины
>>884436 >char звёздочка letter Тут ты объявляешь УКАЗАТЕЛЬ на ОБЛАСТЬ памяти. И на что он у тебя указывает? На хуй знает что, т.к. ты его ничем не инициализировал.
Когда std::cin пытается что-то записать в хуй знает какую область памяти, то всё идёт по пизде. Указатель ОБЯЗАН указывать куда-то, если ты хочешь работать с данными по его адресу.
В твоём случае достаточно просто создать переменную на стеке. Т.е. написать char letter. И уже с ней работать.
>>884517 Охуительно конечно. >>884521 Мда, это я видимо перепутал с &. >>884522 > Т.е. написать char letter. Уже пытался, тогда по пизде идет всё остальное. Видимо, просто сделаю 2 переменные, и укажу одной на другую.
>>884525 Судя по ошибке на твоём скриншоте у тебя там std::map, у которого ключ какой-то int, а значение std::string. ВСЮ строку(std::string) сравнить с одним символом(char) нельзя.
Давай сюда код. Через ideone или pastebin. И так, чтобы он скомпилился.
Крестухи не смогут ответить на этот вопросАноним29/11/16 Втр 22:18:42#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; }
>>884525 Если ты хочешь узнать есть ли подобный символ в строке, то нужно использовать ПОИСК в строке, а не сравнение с символом. В твоём случае: if (useletters.find(letter) != std::string::npos){ std::cout<<"Letter exist"<<std::endl; }
>>884539 Мне нужно не только знать, есть ли он в строке, но еще и знает его номер. Но вообще да, вектор здесь не нужен, это можно сделать и со string через find, мне уже сказали.
>>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>
>>884547 Тогда буду рад цитатке из стандарта крестов, т.к. и правда не понимаю с чего будет выведен не адрес, а не кусок памяти по адресу + 3*sizeof(int).
Я снова выхожу на связь. В моем гениальном быдлокоде появился один ахуительный просчет. > find(vWord.begin(), vWord.end(), letter); находит только первое значение. То есть если в слове 2 одинаковые буквы, find показывает номер только первой. Это можно как-нибудь обойти? На ум приходит только отрезать начало до номера первой буквы и проверить снова, так до конца.
>>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){ ...
>>884585 Ну, то что на пике не работает, хотя может я туплю. > vWord.begin() + то, что вернул find А вот это кажется реальным, сейчас попробую. >>884586 > Сравнение std::string с char. Сижу и проигрываю с себя же. Надо было ведь так проебаться. А я,
>>884596 > Надеюсь суть донёс. Донёс, и очень даже понятно. > Надо начинать поиск с прошлой позиции + 1. Я так и понял, да. >>884597 Всё, понял. Спасибо.
Кстати, ещё один вопрос крестухам, на этот раз простой: почему можно писать begin(vWord) (где vWord это std::vector<char> или что-то вроде этого) без "std::"?
>>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]
Из-за ADL можно иногда писать find вместо std::find и accumulate вместо std::accumulate и проч., но, в отличие от std::begin, так не делать крайне нежелательно.
>>884676 Есть идея что это наследие C++98/03, там, вроде, не было требования хранить данные в векторе непрерывно и не было std::vector::data(), а в C++11 появилось требование. ABI ломать не стали.
>>884515 >Вектор - это же направленный луч! Не луч, а направленный отрезок. Ведь существует модуль вектора
>>Я например в инстиуте учусь, только я не виноват что нам нихуя не объясняют а заставляют пилить ебанутые программы на языке, который я никогда не учил. Нет, чтобы всё как у людей - есть array, есть mutable array. Нет блять, хочу какие-то векторы изобретать. Вектор - это же направленный луч! В каком ты институте-то учишься?
>>885169 Нет, на математике как таковой щас проходим (и проходили с октября) интегралы и всё, что с ними связано, а на погромировании были темы уровня "как поставить ide", потом совсем основы, ну и сегодня вот указатели.
Аноны для чего нужна инкапсуляция? Как она применяется на практике? Не Совсем понимаю выгоды сокрытия переменных и функций если доступ к ним осуществляется через всякие интерфейсы.
>>885179 Ты не испортишь переменную из вне если у тебя нет интерфейса для её редактирования. И это неотъемлемая часть ооп. Как ты создашь класс без инкапсуляции?
>>885181 Точно так же. Только не буду к переменным напрямую обращаться. Да и вообще часто во всяких игровых движках в классе вектора обращение делают к координатам напрямую.
>>885184 Как это напрямую? Класс же состоит из этих объектов. Ты просто не сможешь создать класс и не включить в него ни один объект. сможешь, но он будет бесполезен
>>885163 >Не луч, а направленный отрезок. >Ведь существует модуль вектора Вообще-то вектор - это элемент линейного (векторного) пространства, который можно представить в виде направленного отрезка.
>>885179 >Аноны для чего нужна инкапсуляция? >Не Совсем понимаю выгоды сокрытия переменных и функций
Так в этом же и вся фишка. Чтобы спрятать как можно больше данных от прямого воздействия на них. Оставив лишь возможность взаимодействия только лишь через интерфейс.
Плюсы и минусы инкапсуляции?
Плюсы: 1) Полный контроль над входящими и исходящими данными
2) Можно, без боязни сломать все остальное приложение, править реализацию методов компонентов. Так как во всем остальном приложение фигурирует только интерфейс. А вы меняете только реализацию логики.
Минусы: 1) Если вы нашли ошибку в библиотеке которую используете. То вам будет трудно ее исправить.
2) Снижается скорость работы приложение. Ну этот пункт думаю вообще учитывать нет смысла с учетом мощностей которые теперь доступны. И плюсов которые она предоставляет.
Двач,есть у меня комобобкс. В пропертис я в items добавил допустим две строчки. Как мне присвоить индекс к этим строчкам. Типа у первой строки индекс=0 у второй индекс=1?
>>885199 > Вот этого и не понимаю. Испорчу через интерфейс > Спорно это всё как-то. Делаю только лабы и не могу понять её плюсов. Плюсы только если твой код будут другие люди юзать, так удобнее просто обычно - они же вообще не знают что ты там напилил и с инкапсуляцией на ошибки с меньшей вероятностью наткнуться. А так вообще похуй.
Есть одна байтоёбская функция с циклом for (size_t i = buf_size; i > 0; i -= 4, buffer += 4) и один даун (я). И вот если на вход прилетает что-нибудь, например с размером 343, т.е. в конце остаётся меньше 4, i улетает в минус но из цикла не выходит.
>>885179 Когда работает много людей, пользователи твоего класса должны знать, что если они будут использовать все как надо, то ничего не сломается. А ты, в свою очередь, должен знать, что если ты не будешь трогать интерфейс, то тоже никому ничего не сломаешь. Для этого и нужна инкапсуляция - это защита данных, которые автор класса может менять.
>>884281 Спасибо конечно, но по сути мне нужно самому реализовать вектор. Сортировку реализовать не проблема, плюс по заданию это не кусорт. Шаблоны мне пока не нужны.
>>885149 Бамп. Как изолировать пространства имён членов класса? Подсказали вместо неймспейса использовать полностью публичный класс состоящий только их статических функций, но это костыльно выглядит
>>885179 >Аноны для чего нужна инкапсуляция? Чтоб класс было невозможно использовать в многопоточной среде, т.к. неизвестно, какие сайд-эффекты у вызова метода.
> Не Совсем понимаю выгоды сокрытия переменных и функций если доступ к ним осуществляется через всякие интерфейсы. Сокрытие переменных нужно тогда, когда есть инварианты класса, которые должны сохраняться.
Но всякие дебилы учат, что нельзя иметь класс Point с открытыми полями x, y, z, а нужно присобачить к ним геттеры и сеттеры. Вот это уже не ООП, а ООП головного мозга. Благо, в C++ последнее не очень распространено, тогда как в среде Java-макак...
>>885265 Вот как здесь надо только с неймспейсами. Добавил чисто виртуальный деструктор чтобы объект этого класса создать нельзя было. http://ideone.com/PkoAwG
>>885219 Лол, ты о чём? Ты уверен что ты сам понимаешь что это и зачем надо? Какая разница govno.x или govno.x(); ??? Какая разница govno.setX(123) или govno.x = 123 ??? Как это в чём смысл? Чтобы получать или изменять значение, нет? А ещё предположим в этом классе есть всякие методы типа нормалайз и + и ещё дохуя чего. Получается у нас есть охуенный класс вектор, который при этом не инкапсулирует внутренее представление своих данных. Ну и что теперь? А вот если бы был какой-нибудь class Yoba { public; rofl * kakoetoGovno; ... } и при этом kakoetoGovno по должно изменяться только внутри класса для каких-то своих хитрых и коварных планов, тот тут инкапсуляция пригодится. А то ты напишешь либу(или просто с кем-то что-то будешь пилить), а васян напрямую обратится к kakoetoGovno и изменит значение там, в результате все остальные методы этого класса которые работали с kakoetoGovno будут работать не так как рассчитано. А потом он тебе напишет что плохо зделали тупо, надо ещё разбираться(=тратить время) как автор че там сдеалал, что ему пришлось полчаса искать ошибку, а не просто без задней мысли использовать. По идее как-то так.
>>885225 >Динамическое создание объектов >Мне кажется облегчает разработку Ты понимаешь что ты пишешь? Я не могу динамически создавать объекты класса с открытыми полями?
>>881172 (OP) Очень хочу найти анона, который будет мне годным наставником по С/С++ и, возможно, Qt в дальнейшем. Чтобы раз в N дней связываться с ним и задавать глупые вопросы, которые трудновато сформулировать для Stackoverflow и гугла. Или когда не хочется палить код. Пока, думаю, нужно это будет нечасто, да и скорость ответов не важна. Ну и вообще, годного анона хорошо бы. Чтобы советовал умные вещи и объяснял, где я на этот раз накосячил. В любом удобном формате - почта, скайп, телега, вк. Если не здесь, то где поискать таких?
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()
>>885399 Read The Fucking RTFM уже! > If db is not specified, or is invalid, the application's default database is used. Откуда оно берёт application's database, если не из глобальной переменной где-то в кишках Qt?
>>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.
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()); } }
>>885422 В смысле "нафиг"? Потому что не хочет оперировать символами в стиле С++ ксор, а обычными оперирует. >Делай reserve() для res. Зачем, он же автоматически расширяется.
>>885428 Эх, сейчас бы писать кроссплатформенный, быстрый и красивый софт на чем-то кроме крестопараши, писать ААА-игрушки на чем-то кроме крестопараши, писать дрова, системные утилиты и сами операционные системы, программировать микруху на чем-то кроме крестопараши.
>>885428 Везде, где я видел, строки ебанутые, кроме как в Rust. Они единственные, кого я знаю, понимают, что у строки не должно быть доступа по индексу.
>>885430 >>885430 >кроссплатформенный, быстрый и красивый софт на чем-то кроме крестопараши Софта на крестопараше, где сочетались бы все 3 качества, почти не существует. > писать ААА-игрушки на чем-то кроме крестопараши C# >сами операционные системы, программировать микруху на чем-то кроме крестопараши. Это и так на 99% не на крестопараше делается.
>>885430 >кроссплатформенный Сынок, это фантастика. Тебе в джавапидорам. Хотя стоп, даже там не все гладко, хехе. >быстрый и красивый Тебя за такие кукареки лид голову клавиатурой проломит и выбросит на мороз.
>>885422 >Делай reserve() для res. Нихуя не поменялось. >>885434 Браузеры те же, чем тебе не софт? KDE то же, в прошлом вроде скайп и софт адобы. >>885434 >C# Юнити - не ааа. И игр таковых (йобы) на нем нет. А в CryEngine/UE вроде как С++ Вообще, у вас тут какое-то буйство сегодня, зайду попозже.
Есть, скажем, 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]}; ?
Мне как-то это виделось очевидным применением структур для приведения каких-то сериализованных данных в нормальным вид, а тут оказывается, не только не знаю, как это сделать, но и можно ли вообще, так как не гуглится нифига.
>>885456 >адреса элементов не подряд идут Ну так и (unsigned short )&data[9] может обломиться на endianness. Весь вопрос получения структуры из массива упирается в то, как этот массив был получен из структуры (и был ли)
>>885457 Я проверил. между char m и unsigned short y (в моём случае, по крайней мере) стабильно один байт пропускается, из-за чего всё сбивается.
>>885458 >Ну так и (unsigned short )&data[9] может обломиться на endianness. Предположим, тут всё работает и они чудесным образом совпадают.
>как этот массив был получен из структуры (и был ли) Неизвестно, байты по сети получены. Это просто заголовок файла определённого формата, где представлена изначальная информация.
>>885462 Чё ты нервный такой? Я не понимаю, ты что, не согласен с тем, что memcpy(•s, data, data_len) не всегда работает, потому что адрес элемента может не быть адрес_предыдущего + размер_предыдущего, как в массивах?
Есть здеся Qt-бляди? Как мне вывести список с прокруткой, состоящий из QPushButton и rich текста? Если бы не было кнопок, я бы просто положил в QTextBrowser эти строчки и дело с концом, но у меня в каждой пятой строке кнопка должна быть.
Для начала тебе нужно не распыляться, а выбрать одно из нескольких десятков направлений. Мир не ограничивается системным программированием, тебе не обязательно шагать по моим стопам. Направлений/стеков куча, выбирай сам. Выбери что-то одно, что-то узкое и выучи полностью теорию. Везде можно найти свое место, главное - не бояться, не тупить. Ближе к концу 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 и запили пару фич, а потом пиши на мыло американскому менеджеру проекта, что ты сделал то-то и то-то и хочешь контрактором поработать с испытательным сроком. Тебя возьмут. Готовься к тому, что в первый год твой годовой доход будет низким, но он будет в разы (!) больше годового дохода учителя физики из сельской школы (или кто ты там, забыл).
>>881172 (OP) Господа, смотрите какая хуйня мне нужна:
Есть обьект, у него внутри уникальный айди и данные. Для обьектов нужен пул, в котором элементы расположены последовательно, как в векторе. Элементы вместо удаления помечаются как неактивные. В пуле нужен итератор по активным элементам. И вместе с этим нужна возможность по айди получить стабильный указатель на элемент, который не проебётся, например, при ресайзе пула.
Пиздец в новом стандарте поехавший рандом. Чтобы вызвать функцию рандома нужно новый объект движка создавать. Его ещё хранить надо не забыть. Как можно рандом одной строчкой сделать?
>>885974 Я а так уже засрал свой класс. Ещё 2 объекта сделают его ещё уродливее. Проще юзать сишный рандом. Вот зачем все внутренности нужно было нарушу вынимать?
>>885978 > Проще юзать сишный рандом. Ни для чего серьёзного он не подходит. > Вот зачем все внутренности нужно было нарушу вынимать? Чтоб контролировать соотношение качество/производительность. И были какие-то гарантии реального рандома (random_device)
Сап, гайс. Читаю Липпмана. Есть задача: вывести содержимое вектора, используя рекурсивную функцию. Так вот, если использовать этот код http://ideone.com/kawfg3, то все работает. Если заменить параметр функции на итератор, то все летит по пизде и компилятор выдает разные результаты в зависимости от содержимого вектора. Ананас, поясни нюфане, где именно мой косяк спрятан. В условии выхода?
>>883437 upd Примерно понял, что нужно реализовывать через создание структуры массив из 10 элементов, ссылка на следующий экземпляр. Но как упростить работу с индексом элемента? Можно ли создавать методы для структуры?
>>884200 Не пизди. Залазишь на хедхунтер, вбиваешь вакансию быдлокодера С++, и изучаешь стек технологий, в основном это stl/boost/QT, ну и знание основных алгоритмов
Сап. У меня есть очередь, состоящую из объектов класса classA, которую нужно заполнить из файла при инициализации. Я использую динамический массив, но не могу разобраться до конца как это делать, помогите пожалуйста
>>893131 Удалить спам или перекатить нюфагтред в котором было 2к постов — хуй. Зато почистить сгнивший тред — вот вам. >>893148 В последнем треде >>892494 запилили шапку, успокойся.
Анон, подскажи годную литературу по make, чем ты пользуешься? пока не знаю как ее подключить, скачал блокнотик и minGW поковырялся в кишках утилита есть, наверно в консоли что-то прописывать нужно, подскажи годной литературы на русском, еще у меня вопрос, я полностью забыл математику, сложновато вкатиться в дискретную, подскажи годноты.
От старости бегущих в никуда...
Вполне понятно: с пропозалами мы дружим,
А вот с фичами всегда у нас беда...
Мы нацепляем лямбды, ranged-for,
Асинков побольше норовим засунуть в код...
И все нам кажется, что мы достойны трелей,
И студента в программисте можем разбудить...
Ну, хорошо, коль студент тот рядом,
А если он давно уж не студент?...
Смешно смотреть, заманивая скоростями,
Как приходится идти на беспредел...
И всё равно, что студент - уже бывалый программист:
На свой язык он смотрит сквозь стакан,
Последнее, что может быть неясно:
Когда раскроется вот этот весь обман?...
Быть может утром, в солнечном восходе,
Написав подлиннее так шаблон,
Проводишь молодость свою ты на пороге,
Поймешь: он старости такой не ждал...
А может все закончится в тот вечер,
Когда твои UB он разглядит,
Не будет ночи написанья кода...
Но даже в старости, монады манят нас.
Прошлый тред: https://2ch.hk/pr/res/866503.html
Q&A
Q: Где шапка?
A: У мочератора. В прошлом треде.
Q: Что делают хейтеры?
A: Сосут член вместе со своими мамашами.
Q: Что делают студенты с лабами?
A: То же, что и хейтеры