>>426109 Видел но там нет 2-3х последних постов в которых мне ответили, и нигде нет... А я не сохранил.
Продублирую вопрос: Есть один класс в нем есть map typedef struct NewStruct{ unsigned id; } STRUCTAZAZA; typedef map<size_t,NewStruct> NewType1; class class1 { NewType1 _mapStorage; }
Как правильно организовать доступ к _mapStorage соблюдая инкапсуляцию, или просто нахер её и набыдлокодить прямой доступ к переменной класса? Доступ из стороннего (не наследуемого класса) Няша, кто отвечал мне ответь ещё раз!
>>426219 Сука, как ты заебал уже меня. Но ладно. Короче, если тебе нужно только читать эту переменную, не меняя ее, то делаешь public метод: const NewType1 &mapStorage() const { return _mapStorage; } При этом возвращается ссылка, что позволяет избежать создания копии. Если надо и читать, и изменять, то добавляешь еще один public метод: void setMapStorage(const NewType1 &x) { _mapStorage = x; } По сути это уже получится близко к тому, чтобы просто сделать _mapStorage приватной, но через метод правильнее (пока не вникай, возможно, в дальнейшем с практикой поймешь причину).
Первый день тут, надеюсь с 8275 раза в тот тред запостил. Мне нужно выполнить следующую задачу: Взять из файла текст (слова, разделённые знаками препинания и пробелами) и сдвинуть буквы, в каждом слове, влево или вправо, на n символов. Результат записать в файл.
Есть подозрения, что это самый низ и уже существует много готового кода. Собственно нужна помощь (подробный алгоритм действий, ссылки на похожие задачи или даже куски кода). Сейчас даже не могу из файла вытянуть текст в массив=( Студент 1 курса, изучаю C++ вот уже 2-3 дня.
>>426396 Даже если существует функция "взять текст из файла и сдвинуть символы влево", суть твоего задания в том, чтобы написать аналог этой функции самостоятельно.
>>426399 Это верно. У меня нет намерения выполнить всё одной функцией. Ситуация такая, что я не знаю как подойти к вопросу. Я 2 раза перечитал методичку и какие-то кусочки мозаики имеются, но как реализовать их я не знаю. Мне до сдвига ещё нужно добраться. Сейчас пытаюсь понять, как вытянуть строку из файла, для того чтоб можно было дальше ей манипулировать. Как-то так.
>>426396 >сдвинуть буквы, в каждом слове, влево или вправо, на n символов Что это значит? Движение относительное, если ты все сдвинешь на n символов, то нихуя не поменяется.
>>426100 Платиновый вопрос: как правильно начать сразу с c++11? Входные данные: достаточно глубокое понимание железа, программирования в целом, но большой опыт в основном пхп/питон/жабаскрипт. Трогал хаскель, даже что-то работало, немного делал коммиты на С++ в большие проекты, STL использовал, почему пойнтеры после realloc херятся знаю, сортировки написал. Вроде бы всё понятно и просто, функции-типы-классы, но нет уверенности, язык не стал инструментом, пока только как препятствие. Хотелось бы чтобы всё по хардкору, складно, непротиворечиво, внятно, коротко и по делу. Есть такие книги/туторы/волшебные таблетки? Стандарт читать нунахуй.
>>426225 А ну-ка поясни мне. Почему ты возвращаешь ссылку? Нужно возвращать по значению. Ну вызовется один раз конструктор, да. Но зато не будет такой такого, что какой-нибудь пидор изменит значение в этой ячейке памяти.
>>426604 >Ну вызовется один раз конструктор, да. Представь, что ты возвращаешь какой-нибудь контейнер с хулиардом элементов. Такой конструктор копирования будет очень долго работать. А если ты эту функцию ещё и в цикле вызываешь, а? >Но зато не будет такой такого, что какой-нибудь пидор изменит значение в этой ячейке памяти. Не изменит, там же возвращается константная ссылка.
>>426494 Читать его нужно для прояснения спорных моментов и понимания устройства языка. Обычно, такое нужно с уровня regular developer. Senior и выше уже хорошо ориентируются в стандарте.
Считывать и записывать в файл научился. Вопрос: как вывести в string? Я пытался сделать тип char, но он так понял с ней не совместим. Записать в массив получилось(просто создал заведомо больший массив), но толку от этого на практике нету. Собственно вопрос: как записать из файла в строку? Вот код. И сразу по поводу библиотек - знаю что тут 100% есть лишние, но старался подключать всё, что могло понадобиться. Код добавлю в следующим посте, не получается из-за какого-то слова из спам листа.
>>426762 Лучше в конструктор путь файла пихать сразу, читабельнее, и нет вероятность, что будет вызваны дефолтные конструкторы внутри класса. Хотя я не знаю как реализован ifstream, думаю, нормальные С++ погроммисты поправят, если не прав. Типа ifstream file(path); if (!file.is_open()) return -1;
>>427893 Ок, с первым обосрался, не прочел доки. Даже представить не мог, что кто-то может придумать такое бредовое поведение. А вот на второе глубоко насрать. Даже при использовании SSD затраты на вызов конструктора пренебрежимо малы по сравнению с чтением файла. Зато код читабельнее.
>>427912 Ну а какой, по твоему, оптимально удобный и читаемый способ прочесть весь файл в строку?
Учитывай, что сначала потребуется узнать размер файла, дабы не перевыделять память сотню раз. В то время, как передавая в конструктор выделение будет сразу, через std::distance.
>>427964 Да глупо это, оператор >> должен тупо считать весь файл в строку без всяких проверок. Хз каким местом там думали. Алсо, нахуя скобки вокруг istream_iterator<string>(file)?
>>427972 Тут прости, не подскажу. Есть вариант, что без скобочек он будет считать второй параметр (istreambuf_iterator<char>()) будет считаться как просто объявление переменной. Но это мои догадки, может и не прав.
Поясните начинающему крестопетуху, почему в приведенном примере ни copy-конструктор, ни move-кщнструктор не вызывается? Т.е. в моем понимании, для С++98 должен вызываться в этой ситуации копи-конструктор, а для С++11 - move-конструктор. http://pastebin.com/AkWcth1z
По4ему, блять, С++ такой, сука ВОНЮ4ИЙ? ЕКСТЕРНАЛ ЛИНКЕД ЕРОР))) АНРЕСОЛВЕД ЛУНКЕД СУМБОЛ)))))) один ЭКСТЕРНАЛ, блять, ОХУИТЕЛЬНЕЕ другого. Почему, блять, ебучий СТРУСТРУП и КОМПАНИЯ™ фокусируются на всяком говне, но не могут сделать нормальную линковку в языке? Почему у языка нету единой реализации? Почему С++ такое говно?
>>432880 Нахуя вы эти книги пачками читаете? Больше практики и все само придет, ничего там такого уж охуенного нет, в книгах этих. Многие решения вообще крайне сомнительны. То, что их умеют грамотно и к месту применять авторы, не значит что другим они тоже подходят. У всех свой стиль, как и в литературе, например.
>>432882 Ну, просто стандарт лучше детальнее прочту. Я читаю обычно только по тому, что интересует. тем более там материал занимает 60 страниц(скачал только что). Заранее прошу прощения за сажу, мне лень ее отключать. Спокойной ночи.
>>433106 Автор пикчи вообще не шарит. return 0 - это мирное, удачное завершение.
Проблемы с кроссплатформенностьюАноним04/02/15 Срд 22:11:28#90№433155
У меня проблема с кроссплатформенностью. Пилю одну тулзу для поиска объектов на видео с использованием OpenCV. При этом под виндой и линуксом вызов опенцвшного метода выдает разные результаты. Совсем чуть-чуть разные, отличаются в 14 знаке после запятой. Такое впечатление, что виндовая версия имеет чуть меньшую точность - разница как раз выглядит как округление. То есть под линуксом я получаю 1.07159721374511718750000000000000e+02 а под виндой 1.07159721374511720000000000000000e+002
Нужно чтобы результаты были одинаковы. Что может быть причиной?
Под виндой компилю 2010 студией, под линуксами gcc 4.6.3 OpenCV в обоих случаях собран из исходников там же.
ЧСХ, джава-версия, работающая с opencv через jni, выдает одинаковые результаты на обеих платформах. Так что я даже не знаю что думать, ведь если бы проблема была внутри нативного кода опенцв, то она проявлялась бы и под джавой.
>>432855 Потому что Name Mangling делает линковку ущербной и ломает ABI, но кресты такие by design, откажись от перегрузки функций и операторов и будет тебе щастье
>>433155 ещё, кстати, в винде libc содержит сюрпризы, и ведёт себя не всегда в соответствии со стандартом(например, позволяет извлекать квадратные корни из отрицательных чисел, вместо того, чтобы вернуть EDOM)
>>432886 >>432886 Нет, это ты пидорское говно, которое не умеет читать стандарт. Там явно перечислены случаи copy elision. И вообще если объект действительно не перемещается, то какого хуя он должен создавать побочные эффекты? Если ты на это рассчитываешь — у тебя проблема с дизайном. Алсо мув конструктор и прочие друзья будут вызваны если объект действительно будет перемещен.
>>433175 >glib2/boost >OpenGL/SDL Так нормальные люди идут в программирование не потому, что хотят заработать или это модно, а потому что им это интересно. И я совершенно не понимаю, что может быть интересного в программировании с теми библиотеками, что ты назвал. Да, жить можно, но это не жизнь, после часа хочется бросить программирование от безысходности.
Учу с++ по старым книгам и на Ubuntu. Книга по которой учу для devc++(windows). компилятор g++ gcc версия 4.6.3. Не пойму как инициализировать в объекте статичный член static ( не static const)?
когда пытаюсь обратится к статичному члену получаю ошибки g++ -Wall -o "staticclassmember" "staticclassmember.cxx" (в каталоге: /home/cxx) /tmp/ccm1AmMf.o: In function `main': staticclassmember.cxx:(.text+0x24): undefined reference to `Student::noOfStudents' collect2: выполнение ld завершилось с кодом возврата 1 Сборка завершилась с ошибкой.
>>435110 int A::b = 10; т.е. static данные всегда публичные? Они существуют даже без инициализированного объекта? Я уже думал в стандарте какие изменения появились.
как не перебирай итог толще 400кб.. на то чтоб разобраться как использовать -shared-libgcc уже опустились руки, трое суток бесполезного гугления
читал мол, что если нет вызова функции принадлежащей заголовочному файлу, то код опускается ... вероятно #include <iostream> заставляет вшить целиком какую-то откомпилированную библиотеку или типо того, но как тогда правильно вызвать заголовочный файл?
Может и нормально, что программа с "стандартным для с++ вводом/выводом" весит минимум пол метра, но может есть тогда схожие по удобству альтернативы?
Привет всем в этом чятике. Я школьник, лежу дома на больничном, ощущаю острую потребность полезных свершений. В частности, хочу познакомиться с c++, понятное дело, не с нуля. Но проблема в том, что я совершенно не представляю, куда направить свои старания. Ведь ты не изучишь программирование по книжкам. Короче, что необходимо написать каждому сишнику, чтобы прийти к успеху. Алсо, помню какие-то рулеточки с набором "хеллоуворлдов" уровня калькуляторо в и конвертеров валют.
Братишки, ситуация следующая. У меня имеется матрица m x n значений int от 0 до 239. Я хочу считать её и создать 256-цветный .bmp файл градаций серого размером m x n.
Так вот, ну я создал тестовый файл .bmp 3 x 2 пикселя, открыл его HEX-редактором в notepad++ и ничего не понял, конечно же. Потом создал 2 монохромных файла из единственного пикселя 1 x 1, один чёрный, другой белый, два весёлых гуся. Отличаются, естественно, они на один один символ, который расположен ближе к концу файла.
Но это мне никак не помогает понять, что происходит. Кто-нибудь может привести кол для создания маленького bmp=файла?
>>436196 Там же шапка-хуяпка-заголовок, задающая битность, наличие RLE-сжатия и т. д. С бинарными форматами обычно долго разбираться, лучше возьми готовую библиотечку.
>>436238 блять, ну вот и пользуйся opencv! или WinAPI. или еще хоть чем. смотри, ты задаешь довольно тупые вопросы на дваче, но при этом надеешься самостоятельно реализовать чтение\запись формата bmp.
>>436266 Я тебе ещё раз повторю, что ctrl+f находит единственное упоминание bmp. Я не понимаю, где и что мне читать. Где? Что? Ладно, я конкретизирую вопрос. Пускай имеется массив
Хочу создать bmp файл градаций серого (0%255) размером 2 x 10. МОЖНО МНЕ ПРОСТО ПРИМЕР, ГОТОВЫЙ КУСОК КОДА? Уж как-нибудь разберусь, что там какая шапка значит.
>>436281 Ну и? Куча говна по ссылке. Какие-то DWORD, windows.h и прочее говно. ЭТО ЧТО БЛЯДЬ ТАК СЛОЖНО? - Просто показать кусок кода, который через потоки пишет всё это дело.
Bytes 0-1: Magic word. It contains the letters 'B' and 'M'. Bytes 2-5: Double word. File size. Bytes 6-10: No idea. Leave this zeroed. Bytes 11-14: Double word. Start of the bitmap. Bytes 15-18: Double word. Size of the header. Normally set to 40. The header is considered to start at offset 15. Bytes 19-22: Double word. Width. Bytes 23-26: Double word. Height. Bytes 27-28: Word. Planes. Must be 1. Bytes 29-30: Word. Bits per pixel. You'll need this as 24. Bytes 31-34: Double word. Compression. Leave it as zero. Bytes 35-38: Double word. Compressed size. Since there's no compression, this value will be the same as file size. Bytes 39-42: Double word. Horizontal resolution. See below. Bytes 43-46: Double word. Vertical resolution. Pixels per meter, according to Wikipedia. The values seem to vary, but 2835 should do for both. Bytes 47-50: Double word. Number of colors in the palette. Leave as zero. Bytes 51-54: Double word. "Important colors". Leave as zero. Bytes 55-EOF: Bitmap.
Вот я прошу пример КРОССПЛАТФОРМЕННОГО кода, который не использует никакого такого говна. Неужели непонятно? Знал бы я C++, я бы сам написал.
>>436323 тебе ссылку дали даже на википедию, там структура BITMAPINFOHEADER описана, блять, последнее поле - оффсет 50, размер 4, сколько байтов, сука? нет, хочу жрать говно!
Объясни, что за волшебство происходит здесь. Так подозреваю, что что-то связанное с >All of the integer values are stored in little-endian format (i.e. least-significant byte first).
>>436424 А потом на ассемблере. Сложнее всего веб-парашная часть, кстати. Дизигн, CSS, вот это все. Больше всего времени потратил, и все равно кривовато отображается.
>>436439 >>All of the integer values are stored in little-endian format (i.e. least-significant byte first).
целочисленные типы могут по-разному представляться в памяти - либо когда в нулевом байте целого старшие разряды числа, либо когда младшие. здесь в явном виде представляют число в little-endian формате. если просто записать число в файл в бинарном виде, оно запишется в соответствии с архитектурой компьютера, не обязательно литтл-ендиан. последний раз тебя покормил.
>>436494 Я не спрашивал, что такое формат записи числа, я спрашивал про синтаксис >(unsigned char)( sizeAll ) (unsigned char)( sizeAll>> 8) (unsigned char)( sizeAll>>16) (unsigned char)( sizeAll>>24)
>>436536 >>436537 Вы, ребят, издеваетесь наверно. Ни оидн ещё не овтетил на мои вопросы. Сами придумываете вопросы и сами на них отвечаете. Я спрашиваю, не лучше ли uint8_t вместо unsigned char, а вы мне говорите, что это почти одно и то же. А то я не знаю. Но стандарт BMP-шный пишется в определённое количество 8-битных байт. Стало быть, uint8_t лучше?
И синтаксис непонятен. Это уже вопрос чисто по языку. Вопрос тоже по кастам.
>file[ 3] = (unsigned char) (sizeAll>> 8);
Не лучше ли написать: >file[ 3] = static_cast<uint8_t>(sizeAll>> 8);
Посоны, объясните за умные указатели, те самые которые якобы делают плюсы недерьмом. Правда что они потокобезопасны? Это что значит что при каждом дереференсе дергается мьютекс? И во сколько раз тогда это медленнее обычного указателя? в 100? в 1000? Может тогда лучше сразу на гвидоне писать? Такое то "не нужно - не плати" охуеть просто.
>>436887 shared_ptr потоко-безопасен на чтение из разных потоков. Как и обычный указатель. Никаких мьютексов там нет. Но если где то есть запись, то нужна внешняя синхронизация - мьютекс или atomic. Так что при корректном использовании никакой потери производительности нет. За подробностями можешь сходить в гугл с запросом c++ shared_ptr thread safety.
Быстрый вопрос. Мне даются на вход шахматные позиции в виде A5, E6 Как мне их лучше всего преобразовать в координаты элементов двумерного массива. На паскале бы я говнокод с ord'ами накатал, но ведь наверняка в таком классном языке есть короткие способы. Тем более под рукой сейчас только студия
>>436953 Ну, банально. A1 - это [1][1]; C7 - это [7][3] Кстати, встал еще один вопрос по ходу решения задачи. Как мне матрицу смежности для ходов коня по шахматной доске составить?
>>436954 Кастишь первый символ в char, вычитаешь 'А'. Второй символ можно преобразовать в инт через stoi и вычитаешь 1, а можно, как и первый, кастить в char и вычитать '1'.
Написал сейчас внутри мейна double (f)(double) = [](double x) { return xx; }; cout << f(3) << endl; И это говно взлетело, чего я совсем не ожидал. Понятия не имею как это работает, такое вообще правомерно писать?
Исправьте/поясните как нужно делать. В идеале задача очень простая, создать массив из N указателей на функции многочлены вида 1, x, x2, x3...
>>436964 Звёздочки проебались, кину лучше скрин. Поясните, как это работает? Эта лямбда-функция (или как её там) остаётся где-то в памяти? А f на неё ссылается? Как тогда нормально удалить указатели и всё в таком духе.
>>436967 Это лямба функция, ты прав. А вот double (звезда f)(double) это указатель на адрес начала функции. Т.е. какой-то вариант, типа: https://ideone.com/AVWKBi тоже работает, ибо ты берёшь именно адрес функции. Обычно их хорошо оборачивать в typedef. Например так: https://ideone.com/tDD40w Если что-то не так сказал, то поправьте. А лямбду почитай в вики всяких. Это по сути та же функция.
Не знал где написать, поэтому напишу здесь. В общем, анон, у меня проблема с структурами данных точнее с заданием: я знаю что есть векторные стек, очередь и дек и связные списки, графы и деревья. Так вот, анон, у меня задание написать ВЕКТОРНЫЙ СПИСОК. Что это такое и с чем его едят?
>>436986 массив с динамической длиной т.е. если добавляешь элемент, а места уже нет - выделяется новый кусок памяти (обычно по размеру равный текущему, умноженном на константу (1.5-2)), туда копируется все из текущей памяти, а потом все мочится в текущей и массив живет уже на новом месте, но со свободным хвостом. в stl-реализации capacity вектора никогда не уменьшается. в остальном это обычный массив, непрерывным куском лежащий в памяти.
>>437262 Норм. Не зря напилил. Хоть и всем похуй, кроме твоего возросшего скилла и времени потраченного с интересом. Я так же пили сайт для своего бота. Правда я пилил на апаче с CGI на крестах.
>>437558 Я не хочу быть такой макакой как ты блядь, я хочу знать почему при создании new int() мы получаем переменную с нулем внутри, а при int x с говном внутри, и еще много подобных мелочей о которые ты будешь постоянно натыкатся и гуглить. Кокококудах теория нинужна иди нахуй.
пасаны, выручайте. У меня проблема с консольным приложением. Хочу уметь загонять в вектор текст, состоящий из char'овых символов (принципиально char'овыми). Есть ли аналог функциям gets(%имя символьного массива%) или cin.getline(%имя массива%, %его размер%). для векторов? Иными словами: нужно, чтобы программа после запуска приглашала пользователя на ввод текста (с пробелами) и текст этот записывала в тот самый безразмерный на данный момент чаровый вектор.
>>437578 не не, мне нужно, чтобы весь введенный текст (а текст может содержать пробелы), записывался в char'овый вектор, размер которого изначально не указан
>>437576 Ты не запомнишь все эти мелочи без практического применения. А я столкнусь, нагуглю и запомню. Теория нужна для практики, без практики она на хуй не нужна. В универах вас учат матану не для того, чтобы умничать на бордах, а чтобы решать вполне практические задачи. И тут так же.
>>437625 Я не предлагаю учить все это наизусть. У всех подобных неочевидных мелочей есть органичное обьяснение, вытекающее из истории языка. А матан вообще для души, практических применений я пока не вижу.
у меня крче второй семестр начался, и я вас тут всех заебу. опять трабл с консольным приложением: не могу в кейсе switch'a создать массив и заполнить его. в ходе выполнения программа просто пропускает операторы в нужном кейсе и завершает работу. пачму? И еще, есть ли выгода объявлять переменные в кейсах switch'а, али память выделяется в процессе компиляции под все переменные, массивы и т.д вне зависимости от того, где они стоят??
>>437681 Если у тебя выполняется несколько кейсов, то значит ты забыл про break; Выделять память в кэйсах имеет смысл. Например для какого-то действия тебе нужен буффер. Выделится она только в том случае, если этот кейс был активирован. По аналогии с функциями, только другая область видимости.
>>437696 Когда создаешь свое консольное приложение, выбирай пустое, и создавай main.cpp сам. Без stdafx.h. Всегда гугли C++ way вместо сишки. Единственный верный main - int main. Используй <string> вместо параши с strlen. Нахуя windows.h? После того как я все это исправил case заработал нормально.
Посоны, надо напечатать длинную строку из частей. Что лучше - вызывать std::cout для каждой подстроки, или сначала склеить в один string, потом вызвать один раз std::cout?
>>437728 >>437729 Прости, я сначала не понял что ты имеешь в виду. Значит тебе нужно рисовать линии. Opengl не обязателен. Все зависит от того где ты будешь запускать свою программу. Проще всего будет взять какой нибудь кроссплатформенный движок типа SDL и нарисовать на нем.
>>437657 Ну все ясно тогда с тобой. mp3 кодируется, конечно же, не на основе матана, а исключительно при помощи святого духа. Ну, манямирки это дело личное, хуй с ним. А объяснения проще загуглить, чем читать субъективное мнение очередного пропиаренного старпера. Какой бы он ни был охуенный, у него свой подход, а у тебя свой, и для тебя твой подход всегда будет лучше.
>>437780 Какой подход, какой mp3, поехавший? Обьяснения можно загуглить, а можно почитать людей, которые сами пилили этот язык. Второе всяко лучше первого. И да, когда мне понадобится кодировать в mp3, я возьму готовую билиотеку.
Доброй ночи, снова выхожу на связь. Вопрос к тем кто знает (сталкивался на практике) или хорошо знает стандарт 11 стандарт. 11, подчёркиваю, как-никак 2015 год на дворе.
>>437876 Засчитано. Макака попытался оправдать подмену программирования чтением, но соснул, когда кукарекнул про неиспользование матана в жизни. Все, на хуй послан, чепуш.
>>437879 >работаешь с первого курса >какой то чепушила который НИЛЮБИТ ЧИТАТЬ доебался на реквест литературы >фантазирует и называет макакой Все ясно с тобой.
>>437816 зачем задавать такие вопросы или рыться в документации стандартная библиотека - это обычная библиотека подключаешь ее отладочную версию, в ide ставишь брейкпойнт на функцию и смотришь что у нее там в потрохах ну либо просто переход к определению делаешь
>>437881 Так я тоже работаю, со второго правда, в этом году диплом. И читать люблю, но не бесполезные простыни ака учебники, а краткие и по делу написанные статьи. Твой аргумент инвалид. Кем работаешь?
>>437935 тем, что std::string - это часть стандарта С++, а String - я хуй знает, что такое, скорее всего, ты про какой-нибудь класс из MSVC++. вообще не вздумай учить ничего сверх стандарта, пока нормально хотя бы с ним не освоишься. отключай в компиляторе все свистоперделки, которые не являются стандартом.
Господа, платиновый вопрос в треде. Обгуглился-обстэковерфлоуился досыта, приемлемого решенря не получил. Суть вопроса: я капризная манька, которая хочет, чтобы функция возвращала указатель на созданный в ней же массив, который инициализируется через { ... , ... } в момент объявления (я так хочу).
Есть вариант решения: static перед объявлением. Рабочий вариант, но тут начинаются философствования на тему "оно же не сотрётся из памяти, как же не сберечь байтиков-то".
Имеются ещё тривиальные варианты, кроме хитровыебанных паттернов в стиле Александреску. Языка программирования, да что там, самого программирования не знаю, поэтому если предложите вариант, то с простым примером.
>>437945 Надеюсь это ты ответил, а не кто-то за тебя. Так вот. А я успел и фронтендом позаниматься (HTML/CSS/JS), и жабовым бэкендом. Очень быстро перевелся на крестовый проект, в одного пилю. Так что тоже кое-что смыслю. Ты в общем не обижайся, я ж не со зла, просто реально мало толку с книг. Скачал как-то несколько модных, пролистал, понял, что многое и так уже сам использую, даже не зная названия паттернов/приемов.
>>437998 В условиях задачи нет этого, иди на хуй. Смарты для слабаков, у меня и без них ничего не течет. Нехуй где попало в куче выделять, контейнеры и так за тебя это делают.
Как начать делать?Аноним16/02/15 Пнд 18:20:31#242№438012
Собственно у меня возник вопрос, как сейчас лучше всего и правильнее будет изучать C++? В шараге сдавал лабы и все такое без каких либо проблем, сейчас хочу сам изучать C++, и у меня сразу возникли траблы, потому что совершенно не знаю что мне делать, не знаю какие программы писать и так далее. Кто может объясните нубу что делать и как двигаться дальше.
Посоветуйте книгу/уроки/методичку по WinApi, читаю Ритчера "Windows via C++" там даются общие фундаментальные основы в начале, нужно еще что-то с упором на практику.
>>438008 Ну смотри, ебана. Можно сделать char *govno = new char[9000]; А можно: std::string zebok; Во втором случае тебе не надо думать о выделении памяти и удалении, потому что контейнер (string в данном случае) объявлен на стеке, а его содержимое уже в куче, но неявным для тебя образом. Понимаешь? Может, контейнер - не лучшее название, ну, обертка тогда, что ли. Но вообще это контейнер. std::vector туда же.
>>438012 Прата (Prata) http://rutracker.org/forum/viewtopic.php?t=4123652 Потом решай, что ты хочешь: драйвера и прочее системное говно - задумайся лучше о сишке, десктоп - выбирай фреймворк (хули там выбирать, Qt вне конкуренции) и ебаш на нем очередной текстовый редактор/шахматы/мессенджер/что-то еще, чего тебе не хватает.
>>438023 Попробую почитать Прату, как раз лежала в закромах эта книга. Читал Липпмана, но это просто какой то бред, там нечего делать, просто как обзор по языку, задания никакие. Я пока точно не знаю на каком API делать и так далее.
>>437977 Не обижаюсь, это же сосач, лол. Отвечал я. Просто мне ужасно повезло и у меня появился годный, толковый препод, который именно программист а не теоретик. И он, кроме всего прочего, советует читать книжки и зубрить стандарт.
>>438028 Все могут ошибаться, и преподы тоже. Они к тому же обычно, даже если очень охуенные, все равно по роду деятельности привыкают давать советы так, чтобы они подошли как можно большему числу учащихся, но при этом результат может быть далеко не наилучшим, так как советы рассчитаны на массу. Но и я могу ошибаться, ясен хуй. В общем, не принимай на веру ни меня, ни препода, думай и оценивай сам. Попробуй прочитать книжку, потом написать какой-то проект. В другой раз попробуй писать другой проект, читая только гугл.
>>438079 Эндаешь с единичкой, выводишь, затем сдвигаешь вправо на бит, эндаешь с единичкой, выводишь, затем снова и снова и снова, 8, 116, 32 или 64 раза в зависимости от разрядности.
>>438105 Ну епта, это обертка вокруг указателя. Очевидно, что ты не можешь применять оператор [] к обертке, только к указателю, который и возвращает get(). Деструктор вызывается тогда, когда разрушается последний shared_ptr, содержащий ссылку на данный указатель.
Господа, помогите разобраться с двумерными динамическими массивами в обычном Си.
Функция input принимает указатель на указатель, по нему размечает память, заносит с клавиатуры значения в массив.
Вопрос в следующем, если в функции input память размечена как: array = (int )malloc((mn)sizeof(int) ); под двумерный массив, то как в scanf указывать соответствующий адрес под элемент такого массива? Заранее огромное спасибо.
Код программы: //==================================== int main() { int array, n=input(&array); output(array, n); free(array);
puts("\n"); system("pause");
}
//==================================== int input(int array) { int i,n; printf("Please input array length: "); scanf("%d", &n); system("cls");
Аноны, такой вопрос. Знаю c++ на уровне книги Лафоре "ооп на с++". Хочу развиваться в плюсах и дальше, но не имею понятия что вообще учить. Все программы которые я писал - консольные, как делать обычные понятия не имею. Слышал что-то про qt. Может учить его? Вобщем направьте меня в правильное русло.
>>438200 Если честно, у тебя здоровый код, в котором мне лень копаться. Поэтому: если хочешь не просто копипастить текст, а компилировать онлайн, имеются замечатльные онлайн-платформы для этого. Вон, православная http://ideone.com/ например.
Посмотри, скомпилируй. Вдруг осмысленное сообщение об ошибке получишь. Мне-то в вижуал студии вообще не жизнь, а рай. А с учётом перехвата всевозможных исключений (я же C++) просто освоился с наиболее типичными ошибками.
Если в ideone.com не поулчишь осмысленных сообщений об ошибке, попробуй более громоздкую платформу
>>438214 Тебе объяснить что ли, как двумерные массивы создавать в сишечке? Давай объясню. Двумерные массивы -- это массивы указателей типа на массивы типа. Покажу на примере создания матрицы int из трёх строк на пять столбцов (без инициализированных значений).
P.S. Обрати внимание, сколь тщательно ведётся работа с освобождением памяти. Сначала освобождаем память в каждой строке, потом освобождаем сам массив указателей опустошённых строк.
>>438225 Ну и да, с ходу забыл добавить #include <stdlib.h> , отредактировал, добавил.
Кроме того, ругается на unsigned int в цикле for. Значит тебе нужен или C99, или перепиши на инт или на что там там принято в сишечке, я без понятия. Ансигнед индекс это чисто плюсовая привычка, не очень хорошая, наверно.
>>438232 Пожалуйста. А так, я бы вообще запретил все компиляторы, что ниже C99 и C++11. Как люди вообще писали код до их повсеместного распространения, ума не приложу.
>>438182 Подумай, какая область тебе интересна. Сети, медиа, десктоп ui, сервера, хайлоад, много областей ещё. Читай, копай, изучай. Пробуй все. Базовые знания полезны во всех областях. Потом решишь куда углубляться.
>>438182 Посмотри что требуют в вакансиях, потдягивай что не знаешь. Можно еще по собеседованиям походить, просто чтобы посмотреть, если ты нормально их переносишь.
И вот я >>436304 снова врываюсь в тред. Уже почти всё написал. Остался один вопрос. Собственно хочу, чтобы у меня BMP оттенков серого занимал 1 байт на пиксель, а не 4. Для этого здесь >Bytes 29-30: Word. Bits per pixel. ставлю 8.
А теперь внимание вопрос: а как сделать именно градации серого, а не 256 цветных оттенков?
Гугля 8 bit bitmap grey header stackoverflow.com непосредственно хэдеров не нашёл для 8-битных серых.
There is a deficiency in the BMP file format specification from Microsoft. While they do point out in RLE encoding mode that lines must start on an even byte number, they have omitted the following:
EVERY compression group must start on an even byte boundary.
In RGB encoding (no compression), when using 8 bits per pixel, lines must start on a long-word boundary (i.e., low two bits zero).
And, of course, they use 'int' in the spec when it should properly be 'short', and they use 'long' and 'DWORD' interchangeably. Should just be 'long'.
>>438380 >А теперь внимание вопрос: а как сделать именно градации серого, а не 256 цветных оттенков? Никак, делай 8 бит + ч/б палитра. >Гугля 8 bit bitmap grey header stackoverflow.com непосредственно хэдеров не нашёл для 8-битных серых. Ну сохрани изображение из GIMP/Photoshop как черно-белое, да посмотри какие поля что будут содержать.
>>438513 >Никак, делай 8 бит + ч/б палитра. Я и спрашиваю, как сделать чёрно-белую палитру. В какие байты хэдера что проставить.
>Ну сохрани изображение из GIMP/Photoshop как черно-белое, да посмотри какие поля что будут содержать. Под рукой только помирающий компьютер да MS Paint.
>>438514 Нафига тебе BMP? Возьми лучше TGA - он гораздо проще. В примитивном варианте простой хидер на 18 байт, потом несжатые пиксели. http://www.paulbourke.net/dataformats/tga/ Для градаций серого в третий байт пишешь тройку, в 16-й восьмерку, с палитрой не ебешься.
Анончики, какую парадигму юзаете когда прогаете риалтайм? ООП чет нихуя не работает - все рушится когда добавляются зависимости к объектам. Алсо посоветуйте годной литры по этой теме, в гугле только кривые статьи, по которым и так все очевидно мимо 10 кривых реалтаймов с костылями
Рубрика "охуительные вопросы". Допустим, у меня есть указатель на объект, созданный где-то в недрах чужого (библиотечного) кода. Указатель валидный, разыменовывается и все такое. Задача: "приделать" к объекту некие данные, скажем, int. В классе для этого средств никаких нет, он может быть вообще "пустым", типа class Yoba {}; Может, какие-то трюки с адресацией есть? Не могу загуглить, потому что не знаю, как описать это нормально. Нужно для оптимизации. Да, я отдаю себе отчет в том, что это в любом случае очень плохо, но я знаю, что делаю и для чего.
>>438850 >указатель на объект, созданный где-то в недрах чужого (библиотечного) кода >указатель на объект, созданный где-то в недрах чужого (библиотечного) кода >указатель на объект, созданный где-то в недрах чужого (библиотечного) кода >указатель на объект, созданный где-то в недрах чужого (библиотечного) кода >указатель на объект, созданный где-то в недрах чужого (библиотечного) кода
>>438888 чтобы не портить память под Yoba + размер класса (4), так как Hack не определен и размер его неизвестен. Но heap с такими манипуляциями портится все равно.
Вообще я юзаю библиотеку ODB, там есть класс odb::transaction, у которого один из статических методов возвращает текущую транзакцию для данного потока. Моя идея заключается в том, чтобы создать обертку, которая, если транзакции нет, создает ее, а если уже есть, то увеличивает счетчик вложенности (чтобы не передавать в следующую функцию текущую транзакцию, там просто создается новая, которая по факту не начинает транзакцию ODB, а только увеличивает счетчик). Соответственно, когда из функции выходим, счетчик уменьшается при разрушении моего объекта-обертки. Когда разрушается последний объект, счетчик становится снова равным нулю и транзакция ODB наконец завершается. Ну а раз транзакция должна быть одна на поток, а thread_local я не использую, т.к. поддержка старого стандарта крестов, то использую мьютекс и map (ключ - указатель на транзакцию ODB, значение - счетчик). Но odb::transaction::current() (возаращает текущую транзакцию для данного потока) уже и так использует мьютекс, получается что надо дважды лочить, что есть оверхед. Вот я и решил хранить счетчик сразу в транзакции ODB, если уж она гарантированно возвращается одна для данного потока.
>>438902 Так то я думал сделать типа такого: http://pastebin.com/eJLKN2RZ Но там же переменная, а не указатель (это я затупил сначала, да). Надо как-то заставить переменную думать, что ее адрес сменился. Что-то ничего в голову не приходит.
Блять, я тупой. Короче, вопрос снимается, байтоебля отменяется. Я же ее, переменную то, сам создаю, значит могу и наследника вместо базового класса использовать. Пиздец, вот я еблан.
Здравствуйте, посоветуйте, пожалуйста, хорошую книгу для новичка в программировании. Знал неплохо пхп, в общем-то, всё. Сейчас пытаюсь читать Алгоритмы, построение и анализ.
Шел 2015. Указатели. Нужно еще больше ключевых слов в язык. Зубодробительный синтаксис. Хлеба, зрелищ! Набор костылей с набором взаимоисключающих концепций. А что ты предложишь комитету по стандартизации?
Врываюсь, но со специфическим вопросом. Итак, есть у меня овердохуя проектов на крестах на близкую тематику. Соответственно, они часто используют одинаковые исходники. И я, как мудак, храню в папке каждого проекта копию этих исходников. Стоит ли говорить, какой это геморрой, когда нужно поменять один такой исходник во всех проектах? Но ещё хуже - могу забыть обновить их в других папках, что чревато глобальным пиздецом. Как бы мне оптимально всё это организовать? Выделить отдельную папочку common, и туда пихать общие исходники? А как потом конпелировать? У меня всё на простеньких самописных makefile-ах конпелируется.
>>439154 Так напиши библиотеку свою. Я так и сделал. Берешь все свои повторяющиеся исходники, организуешь их в какую-то осмысленную архитектуру, пишешь библиотеку (не забывая о pimpl) и пользуешься.
>>439158 Тогда жри говно и не выебывайся. Можешь еще все в одну папку положить и в мэйкфайлах прописывать путь для поиска хедеров в этой папке. Еще можешь ссылки создавать на файлы, лол. Больше нихуя тут не сделаешь. >>439178 Нет, не фэйк. Пишу на этой дрисне, ибо в веб-параше без нее никуда. Постоянно проигрываю с дебилов, которые еще и бэкэнд на этом хуячат.
Двач, выручай. Пересаживаюсь с 1 стулаJava на другой стулC++. Начал пилить удобную обёртку для движка OGRE 3D. И тут у меня возникли трудности. Есть такая иерархия классов: AbstractObject -> AirplaneObject В AbstractObject.h я подключил NioCore.hсамый главный класс, чтобы иметь доступ к переменным, отвечающим за отрисовку сцены(RootSceneNode, например). В AirplaneObject.h я подключил AbstractObject.h, чтобы можно было наследовать. Дальше, в NioCore.h я подключил AirplaneObject.h, чтобы можно было добавить его на сцену. Ясен хуй, это надо делать в другом классе, но мне надо по-быстрому всё проверить, чтобы работать дальше. Получается такая система инклюдов: NioCore.h -> AirplaneObject.h -> AbstractObject.h -> NioCore.h и т.д. Компилятор пишет, что не определён базовый класс. Если я убираю инклюд AirplaneObject.h из главного класса, то проблема решается. Но тогда я не могу его использовать. Что делать? #pragma once стоит. Пробовал заменять её на гуарды - та же хуйня.
>>439316 У тебя цикл инклюдов. Чтобы получить AbstractObject.h тебе нужно включить туда NioCore.h, но для того чтобы получить NioCore.h тебе нужно включить туда AbstractObject.h который ты не можешь получить потому что у теяб нет готового NioCore.h. Гварды там не помогут. Нужно избегать максимально инклюдов в хедерфайлах. По нормальному в хедерфайле должен быть только инклюд класов от которых наследуется клас которому принадлежит хедер, хедеры с константами и библиотечные (но их тоже лучше стараться избегать). Все остальные хедеры нужно пихать в файл реализации. Вместо инклудов в хедерах используй forward declarations. В твоем случае в NioCore.h вместо #include "AbstractObject.h" нужно сделать class AbstractObject.h;
>>439372 C - функциональный язык. С++ - мультипарадигмовы, с НОРМАЛЬНЫМ, по сравнению с С, ООП. Ну и всякими плюшки. Круглую крышку ОЧЕ сложно провалить в отверстие, которое она закрывает. Практически не возможно, не спилив рожки и не будучи суперменом. У круга оптимальное соотношения периметр/площадь - экономия материала.
>>439447 JavaScript же. >>439437 Ты не прав. >В чистом функциональном программировании оператор присваивания отсутствует, объекты нельзя изменять и уничтожать, можно только создавать новые путем декомпозиции и синтеза существующих. О ненужных объектах позаботится встроенный в язык сборщик мусора. Благодаря этому в чистых функциональных языках все функции свободны от побочных эффектов. Так что сишка - не функциональный язык. С костылями и допущениями почти любой язык можно было бы называть функциональным.
>>439493 Схуев ли она моя? Алсо, я тоже сначала так думал. Но потом разобрался, и понял, что все не так просто. Когда-нибудь и ты поймешь. Нет, не поймешь, слишком тупой и мелкобуквенный.
>>439663 C это язык со статической типизацией. Если ты объявил указатель на тип int то ты не можешь просто взять и поместить его на любую область памяти. Сначала ты должен пообещать компилятору что там записано именно int. (int *) это и есть такое обещание.
Сап. В /b/ меня нихуя не поняли, поэтому иду к вам. Суть на пикрелейтеде. В джаве для таких дел есть generic types. Я пишу T extends AbstractObject и при наследовании указываю, что это за T. Как такое сделать в C++? Пока что приходится кастовать так, как на пикрелейтеде.
>>439698 Я нихуя не понял, что ты хочешь. В крестах можно, например, вот так: http://pastebin.com/aiQ9XnkD Если это не то, изъясняйся лучше, а то хуйню какую-то несешь.
>>439708 А если я вместо него передам какой-нибудь Ogre::String? Это же не будет работать. Чтобы это работало, T должен быть расширенным от AbstractObject.
>>439710 В крестах все это на твоей совести. Никаких дженериков. Да и если ты укажешь Ogre::String, оно просто не скомпилируется. Алсо, я уже советовал тебе бросать нахуй этот говнокодный огр.
>>439714 Ты бы попробовал хоть раз ими воспользоваться, диванный теоретик. Там и программировать можно не меньше, чем на говноогре. Купишь UE4 - у тебя все его исходники даже будут.
>>439717 Да у тебя мозги засраны пропагандой из /gd/, что с тобой спорить. Попробуешь - поймешь, что все далеко не так просто. А до тех пор верь во что хочешь.
>>439719 Зачем верить? Я полтора года делал игры на джаве. Мне нравилось. Попробовал сделать что-нибудь на JMonkeyEngine - ощущения уже не те. И всё из-за системы ассетов, которые можно просто перетащить. Но там всё более хардкорно, нежели на юнити или в уече.
Есть массив int source, заранее известного размера unsigned int n, его значения пробегают исключительно 0 / 1.
Я хочу его конвертнуть (в смысле создать новый, а старый ОСВОБОДИТЬ) в массив: uint8_t compressed, размера (n + 7) / 8 , в последнем байте занято n % 8 бит.
Ну ладно, uinsigned int k = (n + 7) / 8;
uint8_t compressed = (uint8_t)malloc(k);
Как мне побитово перенести значения из int* source в новый?
for (unsigned int i = 0; i < k; ++k) { ??? }
И как перенести последние 0 - 7 значений в "неполный байт"?
Впервые в подобной ситуации, онон. Сам студентота, нужна помощь. Есть система равенств вида пикрелейтед и ряд условий для нее (n=10). Задача - доказать, что показателей u, v будет определенное количество препод уже сжалился и сказал, что их должно быть 16. Причем сделать это нужно силами С++. Однако, я не в силах решить эту задачу даже на бумаге - хуй знает почему. Не получилось это и в маткаде - запутался и нихуя не сделал. Штудирую самоучитель по dev c++, на нем и пытаюсь написать, но пока на уровне "Hello, world". Словом, на тебя вся надежда, онон.
Как писал уже выше, впервые прошу помощи по учебе. Не знаю чем платить тут у вас принято. Могу разве что пак порногифок на 11 Гб залить.
Спасибо.
Препод дал времени максимум до следующей недели, но в крайнем случае попробую выкроить еще пару дней.
>>439870 А мне нра)) Хинт 1: можно выбрать другой язык (там кнопочка внизу). Хинт 2: если перевыбрать тот же язык еще раз, появится другое задание. Хинт 3: один раз введя капчу, можно оставить 10 постов ()включая тот, во время которого вводилась капча).
>>439850>>439837>>439858 В том-то и дело, онон. Я тоже уверен, что нет решений (на VB так и получилось). Но преподу я так и не сумел эту мысль донести У ВАС ГДЕ-ТО ОШИБКА БЛА БЛА БЛА. Решал по следующей схеме, но ни черта не вышло. Просто нет таких пар, удовлетворяющих данным условиям.
Кинь, пожалуйста код для плюсов, хоть покажу преподу, что мол и так и так невыходит.
>>439896 Я так и понял. В любом случае спасибо, анон. Думаю, ошибка в самом условии (может знак неправильно где-то стоит, может еще что), но буду долбать уже препода. В случае чего можно найти тебя здесь?
Аноны, помогите, пожалуйста. Нужно узнать меньшее число из последовательности, которую вводит пользователь, последовательность не ограничена (Для окончания ввода нужно нажать 0). Без массивов, только через while.
Я не понимаю, как организовать ввод последовательности? Куда записывать все числа, последовательность ведь бесконечной может быть, а нужно узнать меньшее число. Нужно где-то держать их
>>439910 Не понял немного тебя У нас вводится ведь сразу over9999 чисел и из них нужно выбрать меньшее. Чтобы узнать какое из них меньшее, нам нужно все их сравнить ведь
>>439904 Да, возвращайся с новыми данными. Самому интересно, что там неправильно. Ну и рабочий код у тебя уже есть. Если нужны ответы, обращайся, распишу по пунктам.
>>439904 Откуда вы берете такие видео, я понимаю в интернете все есть, но где? Это замечательное видео, встал. На жену и дочь уже не встает, да и старые они уже и много крови мне попили
>>439918 >читаешь каждое число, сравниваешь с текущим. не нужно ВСЕ числа вычитывать сразу. Спасибо while (n % 10 != 0){ cout << "Последовательность \n"; cin >> n; if (n<a) n=a; Так? Тогда с чем сравнивать в первый раз
>>439928 Там ведь не написано, что при вводе нуля, там о нажатии только. Вот что получилось в итоге. Спасибо #include <iostream> using namespace std; int main() { setlocale(LC_ALL, "Russian"); unsigned long long a, n; a = 18446744073709551615; n = 1; while (n%10!= 0){ cout << ""; cin >> n; if (n <a) a = n; }
>>439943 >using namespace std; >setlocale(LC_ALL, "Russian"); >unsigned long long >a = 18446744073709551615; >while (n%10!= 0) что за хуйня, блядь? гори в аду
Привет тред, есть одна творческая работа, неоплачиваемая и нужная только мне, которая требует знания С++ на базовом уровне, а именно умения читать чужой код, искать и исправлять на нужные некоторые значения. Мякотка в том, что я даже близко не умею в программирование. Т.е. я знаю английский, имею представление о ОС и её составляющих, знаю основы информатики, но единственный раз когда я что-то писал был в школе на уроке информатики, да и то, это была программа для решения простейших мат. выражений.
Собственно вопрос: как не просто изучить переменные и инструменты языка, но и научиться быстро разбираться в чужом коде, а так же править его с минимумом анальной боли от 100500 ошибок внесённых мною из-за непонимания устройства программы. Я так понимаю, помимо языка нужно изучить принципы построения алгоритмов, основной погроммный базис и принципы работы С++? Какие источники в этом помогут? Можно ли совместить усвоение базы с изучением языка? С чего вообще начинать, учитывая мои намерения, если я не планирую идти в специалисты, а язык мне нужен только для этого хобби?
>>440135 Изучи базовый синтаксис языка. Это позволит менять значения переменных. Если менять логику, то уже надо видеть алгоритмы, понимать их. Меняешь что-то, смотришь что сломалось/изменилось. Паралельно пишешь свои маленькие програмки с таким же алгоритмом. За полгода сможешь сносно читать код, понимать его. Остальное только с опытом разработки.
>>440160 В разумных пределах, конечно. >>440161 Если другие люди это делают, значит это возможно, что за глупости. >>440172 Благодарю, так и начну, пожалуй.
>>440182 Другие люди? Какие другие люди? БЫСТРО - никак, только практика и опыт, сын багов трудных. Читать то ты умеешь, а написать войну и мир? Вот то-то.
>>440182 Что другие люди делают? Другие люди ещё в школе пишут программки на паскале, на первом курсе пишут программы на си, на втором курсе идут работать кресто-джунами, и к концу 5 курса всё равно задают вопросы вида... ну я не знаю, почитай тред.
Не на тот язык ты замахнулся, чтобы быстро править чужой код. Чужой код в крестах может быть чем угодно. Я вот пытаюсь какие-то маленькие программки писать, и у меня примерно 10 вопросов на каждые 10 строчек кода: "Почему так? Что за говно! А нельзя было так?" и т.д.
Особенно с учётом того, что одну и ту же идею можно выразить чисто процедурно и байтоёбно, а можно нагородить каких-то непонятных структур, а есть ещё мамины функциональщики.
Вообще, на самом деле, изучить малую часть языка можно, написав свои laba2. Но я так понял, ты хочешь полистать две-три книженции и читать чужой код. Так вот, ХУЙ ТАМ ПЛАВАЛ.
>>440190 Ты сравни исходники, к примеру, Qt и какой-нибудь сишной либы. Охуеешь, насколько сишный код тяжелее понимать. (Я про архитектуру приложения, если что, а не отдельно взятые statement'ы).
>>438848 >>но я знаю, что делаю и для чего. Полагаю, что таки нет, ведь в божественном С++ нет (и не будет) стандартизованного ABI, а это значит, что тебе очень повезёт, если в ходе твоих манипуляций с этим указателем программа упадёт сразу, а не начнёт себя забавно вести когда-нибудь потом. Исключение составляют случаи, когда ты компилишь библиотеку на том же компиляторе и с тем же набором флагов, но и там с оговорками.
>>440337 Realloc может (и часто это делает) переместить блок памяти. Все указатели на начало/тело этого блока, которые ты конечно же рассовал по своей программе то тут, то там начинают указывать неизвестно куда.
>>436967 http://ideone.com/5iD2p7 Лямбда функция - это не обычная функция, а по сути дела объект некоторого анонимного класса с перегруженным operator(). Поэтому лучше использовать auto или std::function.
>>440350 Полагаю, что имеется в виду смещение от предыдущего указателя стека (до вызова процедуры). В таком случае, если процедура объявлена с соглашением cdecl, то да, 13 байт - очень даже реально.
Я начинаю, необходимо перевести целое натуральное число в двоичную систему с помощью функции.
void print_in_binary(int x) {}
Дело в том, что нельзя использовать массивы, а только простенькие пизденки, такие как ifelse, while;
Интересует не столько вопрос написания кода, как сам алгоритм. Вот например брем число 100, while <деление на 2, вывод 1, если есть остаток, вывод 0, если нет остатка> в принципе число есть, но его необходимо перевернуть, опять же, элементарными средствами. И тут я проебан.
Анончики, помогите. Как задать одномерный динамический массив вещественных чисел? Нагуглил float a = (float ) malloc(nsizeof(float)); но при компиляции выдает Ошибка 1 error C2040: a: "float " отличается по уровням косвенного обращения от "float"
>>440434 Знаешь, бро, сначала я открыл ideone, дабы накидать тебе код и пояснить нормально. Но потом я понял, что ты блядский петух, не способный ввести в гугл один запрос. Чтобы кликнуть на первую же ссылку. Пидор, блядь. А теперь у меня полыхает от погромиздов, блядь. ХОЧУ БЫТЬ ПОГРОММИСТОМ ПОСОВЕТУЙТЕ ЛИТЕРАТУРЫ. Я ПОГРОМИЗД КАК СОЗДАТЬ МАССИВ?. Тратишь на вас, уёбков, время, а вы одну строку в гугл вбить не можете, уёбки.
>>440610 Перед тем как пойти сюда, я гуглил и пытался делать то, что там описано В итоге обосрался с тем, что я объявил переменную, которой обозначал массив.
Сегодня пытался собрать один проект с кучей зависимостей на шинде. Нет, против шинды ничего не имею, дело в другом. Качаю, стало быть, исходники, распаковываю, соснольку открываю, перехожу в нужную папку. Открываю ридми, и... начинается. Чтобы собрать эту библиотеку, используйте систему сборки такую-то. Ну, хорошо. А вот тут используйте систему сборки уже другую. А здесь, чтобы все заработало, встаньте под углом 43.5 градуса к горизонту, начните дрочить и напевать гимн СССР. А вот тут можете даже не пытаться что-то сделать - не заработает все равно, и никакие CPPFLAGS="-Lc:/путь/к/очередной/параше/ -lparasha" не поможет: библиотеку мы видеть отказываемся. Кстати, о библиотеках. Мы, авторы охуенной библиотеки, которая так востребована, что была скачана целых три раза за последний год, ебали всех в жопу, и потому наше говно компилится в .dll + .def (хуярьте свои ссаные .a сами). А мы, авторы еще более охуенной библиотеки, ебали ту библиотеку и ее авторов, и нахуярим .lib и .exp (что это блять вообще?), просто потому, что можем. Больше не могу писать, полнейшее расстройство и апатия из-за всех этих дегенератов. Почему нельзя, сука, мать его, ПРОСТО сделать нормальный рабочий configure.exe, который, мать его, будет понимать CPPFLAGS? А потому что ебали мы в рот тебя, пользователь, пердолься с очередной высранной школьником нитакойкаквсе системой сборки вместо написания кода. Закончилось, кстати, тем, что curlpp то ли не слиноквалась, то ли собралась без экспорта символов. Тут мое терпение лопнуо, и я нажал кнопку выключения. Благодарю за ваше ебаное внимание.
>>440954 > не может сам собрать статическую либу > не знает, что .lib - по сути тот же .a (хотя пользоваться ей в mingw не желательно) > не осилил поставить msys > configure.exe
>>441003 Привет, пердолик. Вообще-то мсис идет с мингв в комплекте, а .либ не линкуется мингв. Но дело не в этом. Нахуя мне пердолиться с мсис и прочими анальными игрушками? Мне надо как можно быстрее собрать это говно и заняться делом.
>>441135 Линкуются и статические, и динамические - формат тот же. Бывают проблемы из-за ABI и всяких внутренних функций, но в простых случаях все работает. > Нахуя мне пердолиться > Мне надо как можно быстрее > Не осилил запустить sh из MSYS и сделать ./configure; make. Вместо этого долго пердолится.
>>426441 >Стандарт читать нунахуй. Ну вот есть православные ресурсы для лентяев вроде тебя и меня.
http://en.cppreference.com/w/cpp -- официальный сайт, но пишется дебилами индусами. Они составляют английские предложения так, что смысл иногда противоположный. Но зато полная спецификация.
http://www.cplusplus.com/info/faq/ -- неофициальный сайт, но очень внятный и наглядный. Всё сразу разбито по категориям: что к какой библиотеке написано прямо в шапке, описаны отличия C++11 и старого стандарта (там в шапке переключаешь, по умолчанию описывается старый стандарт).
В общем, в сумме эти два ресурса исчерпывают все твои потребности.
>>441142 Алсо, со всем этим я так или иначе разобрался. Проблема вот в чем: >curlpp >msys.bat >cd /put'/k/papke/s/govnom >./configure --prefix=/nyashnii/put' CPPFLAGS="-I" (ну ты полян, там дальше пути) Получаем нормальные .a-файлы, все чики-пуки. Собираем проект, к которому линкуем curlpp >-L/nyashnii/put'/lib/ -lcurlpp >undefined reference to че-то-там-из-курлпп, штук 6 разных Заметь, я, как ты и говоришь, просто запустил configure из-под msys. И получил хуем в жопу.
>>441150 Лень опять включать это говно. Скорее всего на curlpp::Cleanup, curlpp::Easy, curlpp::options::Url, curlpp::RuntimeError, curlpp::LogicError (это то, что у меня используется). Хедеры curlpp/cURLpp.hpp, curlpp/Easy.hpp, curlpp/Options.hpp. На пинусе все идеально собралось и слинковалось, а тут пердольство какое-то, нихуя не приспособлено для работы.
>>441194 Можно написать. Но так не нужно задумываться, что же такое 1 в этом контексте. А правильнее писать вообще так: uint8_t∗ compressed = calloc(k, sizeof(∗compressed)); Во-первых, каст в Си не нужен, потому что calloc возвращает void∗, а во-вторых, если потребуется сменить тип compressed, не придется править еще и вызов calloc.
Что здесь не так? Нужно заменить отрицательные элементы массива их квадратами и вывести элементы по возрастанию. for (i = 0; i < N; i++){ { if (a < 0) a = (a * a); } { if (a > a[i + 1]){ m = a; a = a[i + 1]; a[i + 1] = m;
} } } for (i = 0; i < N; i++) { cout << a << "\n"; }
>>441159 Продолжение банкета. Решил я, значит, еще раз попытаться. Делал в этот раз все по уму. Поудалял все говно, распаковал чистенькие исходники заново, запустил msys. Чтобы избежать проблем с указанием путей к либам, решил ставить все в папку с mingw, в которой при конпеляции все ищется. И что же? Буст поставил нормально. zlib нормально. Openssl тоже. Начал ставить curl, а он openssl не видит. Продублировал в CPPFLAGS, не помогло. Плюнул и собрал так. Начал собирать curlpp, а он не видит curl. Причем, заметьте, буст видно, а курл нет. Так может все же не я виноват, а?