Вы видите копию треда, сохраненную 24 июня 2015 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Лабы идут на хуй.
"Как мне сделать Х на чистых крестах без библиотек" идут на хуй.
Все идут на хуй.
Хейтер сосет члены на пару со своей мамашей.
Тег [code] работает через жабаскрипт-костыль: https://github.com/ololoepepe/MakabaCode
Предыдущий: >>472173
std::array<int, 10>
Теперь он тебя ещё спросит за статические переменные.
void file_enter(int M[2][4]) {
int i, j;
FILE *f;
char s[20];
cout << "\nВведите имя массива:\n";
cin >> s;
f=fopen(s,"rt");
std::cout << f;
for (i = 0; i <8; i++)
{
fscanf(f,"%d",&M);
}
cout << "\nМассив:\n";
for (i = 0; i < 2; i++) {
for (j = 0; j < 4; j++) {
printf("%3d ", M[j]);
}
cout << endl;
}
}
Разработать блок-схему алгоритма программы и программу, которая:
а) вводит с клавиатуры или читает из файла, имя которого задает программист, двумерный целочисленный массив размерностью [2 4] элементов и выводит его на экран. Данные в файле расположены произвольно;
б) многократно, в зависимости от запроса, производит расчет среднего арифметиче-ского элементов указанного столбца;
в) по окончании работы сохраняет массив в файле с именем, указанным программи-стом. Данные этого массива сохраняются в виде матрицы, размерностью [3 7] элементов с двумя пробелами между ними, а результаты расчета среднего ариф-метического элементов указанных столбцов матрицы и их номера – в другом файле.
void file_enter(int M[2][4]) {
int i, j;
FILE *f;
char s[20];
cout << "\nВведите имя массива:\n";
cin >> s;
f=fopen(s,"rt");
std::cout << f;
for (i = 0; i <8; i++)
{
fscanf(f,"%d",&M);
}
cout << "\nМассив:\n";
for (i = 0; i < 2; i++) {
for (j = 0; j < 4; j++) {
printf("%3d ", M[j]);
}
cout << endl;
}
}
Разработать блок-схему алгоритма программы и программу, которая:
а) вводит с клавиатуры или читает из файла, имя которого задает программист, двумерный целочисленный массив размерностью [2 4] элементов и выводит его на экран. Данные в файле расположены произвольно;
б) многократно, в зависимости от запроса, производит расчет среднего арифметиче-ского элементов указанного столбца;
в) по окончании работы сохраняет массив в файле с именем, указанным программи-стом. Данные этого массива сохраняются в виде матрицы, размерностью [3 7] элементов с двумя пробелами между ними, а результаты расчета среднего ариф-метического элементов указанных столбцов матрицы и их номера – в другом файле.
почему 111 а не 123
Peremennaya massiv initsializiruetsya tol'ko odin raz (pri pervom obrashenii k ney). Gugli, suka ti tupaya.
Ну так тебе же написали выше - std::vector, std::array. Ими все норм возвращается, без ебли, без сюрпризов, хули еще надо?
>std::array - это контейнер, инкапсулирующий массив фиксированного размера.
Че тебя не устраивает, долбоеб?
Ну так не пиши на нем.
спс
Не резиновая же.
Потому что ты долбоеб безрукий. Недавно проверял свой сервачок крестовый, который уже полгода работает. Памяти 3 МБ с копейками скушал за это время. То есть ничего не течет. Отсюда вывод какой? Не кресты кривые, а руки кривые. На Qt кстати сервачок, что как бы намекает хейтерам засунуть член себе поглубже в глотку и не вылезать из-под шконки.
Нет, борде еще нет полугода.
Алсо,
>сервис
Я конечно понимаю, что СЕРВИС это нынче модное слово, но все же.
В том, что [i| съедает вакаба, видимо
Смотри, маня:
http://stackoverflow.com/questions/6470651/creating-a-memory-leak-with-java
>>478885
В том, что местные долбёбы не могут в ни пастбин, ни в идеоне, ни в дабаскрипт-костыль.
Жаба - одна большая утечка памяти же.
Пиздец, выкатись из треда, инвалид.
Даже я это осилю на плюсах (мимостудент 2 курс пхпмакака)
http://www.linuxhowtos.org/C_C++/socket.htm
А вкинь еще жж лебедева, будь добр.
Не знал об этом сайте, спасибо.
Нихуя, проще использовать высокоуровневую абстракцию, но это не крестоблядь-вэй
В том, что надо быть Сысоевым, чтобы напердолить более-менее сложный сервер на крестах, особенно если ты не обмазан STL и бустом для адекватной работы с данными. Листал сорсы nginx-а - проиграл с того, что какие-то простые вещи вроде парсера хттп хедеров реализованы на 50 тысяч строк байтоебского кода. Можно ведь было стырить сорцы парсера регулярных выражений из кода перла или еще откуда-то и сделать все проще раз в 50 при незначительной потере производительности.
КОтаны как запилить хеллоуворд в .sys? Ну скомпилировать код как драйверный и убедится, что он работает - что система его запустила.
Пишут и на сишечке, но это сорта говна.
Например, вот такая конструкция из приложенного примера:
[code lang="cpp"]
desc.add_options()("help", "produce help message")("compression", po::value<int>(), "set compression level");
[/code]
Охуенно, блять, функция возвращает функцию, которая возвращает функцию. В итоге код превращается в дикое говно из последовательных аргументов в скобках.
В общем, меня уже берут сомнения, стоит ли его вообще использовать.
> Охуенно, блять, функция возвращает функцию, которая возвращает функцию.
Байтослесарь знакомится с каррированием, спешите видеть
Ты же видишь как уебищно это получается в крестах. Не надо пытаться поставить атомный реактор на велосипед.
Ну да, в принципе логичнее было бы сделать что-то вроде
builder.option(...)
.option(...)
.result()
Ну порекомендуй лучший СИСТЕМНЫЙ язык с богатым набором 3-rd party библиотек под все нужды.
кукареку?
builder.setOption(...);
//еще N опций
builder.build();
Так вот оно по-человечески должно выглядеть.
другой анон
Байтослесарю предложили человеческий вариант, но нет, манька упорно продолжает жевать кал и хлебать урину
Я тебе больше скажу, внутри эта builder.option(...).option(...).option(...).build() дрисня может изменять состояние. Но попробуй это борщехлебу объяснить, он же кроме своих мантр ничего вообразить не способен.
> внутри эта builder.option(...).option(...).option(...).build() дрисня может изменять состояние
Изменение объекта внутри по сути ничем не отличается от возврата нового объекта, если методы берут владение, и соответственно, существует лишь единственная ссылка на объект. Более того, некоторые функциональные языки используют эту идею для контроля побочных эффектов.
А чем тебе, собственно, `builder.option(...).option(...).option(...).build()` не угодило?
>Изменение объекта внутри по сути ничем не отличается от возврата нового объекта,
А представь теперь Маня, что тебе надо сделать из одного исходного буилдера два, добавив в каждом случае только одну опцию.
Дык, суть в мутабельности/иммутабельности. Борщехлебы дрочат на иммутабельность, потому что плохо понимают, что проихсодит в коде. Беднягам приходится жертвовать естественностью кода и быстродействием ради снижения количества ошибок.
А x.x.x.x.x.x() некрасиво как по мне. Тем более когда лесенка из
builder.option(...)
.option(...)
.option(...)
.build();
Хотя это вкусовщина, конечно.
Я не шутил.
Естественный код - такой, который отражает повседневную жизнь и ход мыслей. Люди не думают категориями команд или функций. Объекты, их свойства, действия над ними, иерархия. Потому ООП и является естественным. Для математических задач, безусловно, ФП лучше подходит, тут и спорить не о чем. Но, скажем, окошко с кнопками или там карту игрового мира с персонажами представлять в виде иерархии объектов куда проще и естественней. Не надо просто пилой забивать гвозди, а молотком пилить, и все будет ок.
И с такими хуесосами я сижу на одной доске. Не хочу писать компактно, хочу фигачить портянки из повторяющегося кода. Почему ты такая джава-макака?
>>480116
>Я тебе больше скажу, внутри эта builder.option(...).option(...).option(...).build() дрисня может изменять состояние.
Спешите видеть, тупой уебок утверждает что цепочка вызовов для изменения состояния, оказывается может менять состояние. Вот это охуеть открытие.
>>480131
>А представь теперь Маня, что тебе надо сделать из одного исходного буилдера два, добавив в каждом случае только одну опцию.
Нахуя тебе два парсера для коммандной строки уебок тупой?
Цепочка вызовов с точкой выглядит уродливо.
>Вот это охуеть открытие.
Борщехлебу это объясни, он тут кудахчет про иммутабельность.
Делаешь вывов .add_options с общими параметрами, потом создаешь сколько тебе нужно копий объекта, и для каждого вызовом .add_options добавляешь опции которые различаются.
Но люди и не думают в категориях ООП. К примеру, никто не задаётся вопросом иерархией наследования у утюга. И вопрос «что с этой штукой можно делать» куда естественнее вопроса «какая у неё родословная».
Но утюг же воспринимается как объект с присущими ему свойствами (цвет, вес, форма) и действиями, которые может над ним совершить другой объект. me.take(iron); if (shirt.wet) me.doIron(shirt);
Типа такого.
Как задать связнный список для изображения графа не используя указателей, через два массива.
Хотелось бы увидеть пример кода.
Вот вам пример некоего вымышленного языка с тремя принципами ООП, но без объектов (только с примитивами):
1. Полиморфизм:
int sum(int x1, int x2);
double sum(double x1, double x2);
Правда, это ad-hoc полиморфизм, но раз в формулировке это не учтено, то не ебет.
2. Инкапсуляция:
module jopa;
int sum(int x1, in x2);
//...
import jopa;
3. Наследование:
module sraka extends jopa;
//...
double sum(double x1, double x2);
Принципы есть, объектов нет, как и ООП.
А вот вам ООП без принципов:
class Yoba {
int add(int x);
double add(double x); //compilation error (полиморфизма нет)
};
class Yoba {
int x;
private: //syntax error (все поля публичные, нет инкапсуляции)
};
class Peka extends Yoba //syntax error (наследования нет)
Объекты есть, принципы ООП отсутствуют.
Вот вам пример некоего вымышленного языка с тремя принципами ООП, но без объектов (только с примитивами):
1. Полиморфизм:
int sum(int x1, int x2);
double sum(double x1, double x2);
Правда, это ad-hoc полиморфизм, но раз в формулировке это не учтено, то не ебет.
2. Инкапсуляция:
module jopa;
int sum(int x1, in x2);
//...
import jopa;
3. Наследование:
module sraka extends jopa;
//...
double sum(double x1, double x2);
Принципы есть, объектов нет, как и ООП.
А вот вам ООП без принципов:
class Yoba {
int add(int x);
double add(double x); //compilation error (полиморфизма нет)
};
class Yoba {
int x;
private: //syntax error (все поля публичные, нет инкапсуляции)
};
class Peka extends Yoba //syntax error (наследования нет)
Объекты есть, принципы ООП отсутствуют.
Не вижу принципиальной разницы между take( person, iron ) и person.take( iron ).
>Не надо путать принципы ООП с самим ООП
Как это? ООП не соответствует собственным принципам? В твоем примере про утюг, должен ли я наследовать электрический утюг от угольного? Раньше я пользовался угольным, и не хочу сильно менять код.
>список
>не используя указателей
Кастуй указатели к int и храни как int. Не забудь при этом воткнуть в попу дилдак с пупырышками и встать под 43.5 градуса к горизонту.
Во-первых, смотри пример выше по поводу ООП без принципов и принципов без ООП.
Во-вторых, я лично думаю как "объект Я берет объект УТЮГ", а не "вызывается действие взять со МНОЙ и УТЮГОМ".
Вот тебе изображение графа. Можешь считать его в один объект с помощью любой доступной библиотеки. Никаких указателей ты не увидишь при этом, скорее всего.
Алсо,
>наследовать электрический утюг от угольного
Вот это точно неправильно. В лучшем случае они оба наследуются от абстрактного утюга, но набор действий и свойств у них будет существенно отличаться, например, чтоб юзать угольный, надо накалить угли, а электрический для использования надо воткнуть в розетку. Тем не менее, общие свойства и методы у них остаются, как и "дочерние объекты" - есть вес, температура, действие "разглаживание одежды", дочерние объекты "ручка", "подошва" (или как там днище у них называется).
И при чем тут тогда ООП? В императивном программировании я тоже думаю в терминах операций над данными, причем и инкапсуляция там есть и полиморфизм в виде указателей над функциями. Единственно, чего нет - это наследование. Вот я и спрашиваю, что такого дает наследование?
При том, что у тебя есть объекты.
>Объект в программировании — некоторая сущность в виртуальном пространстве, обладающая определённым состоянием и поведением, имеющая заданные значения свойств (атрибутов) и операций над ними (методов). Как правило, при рассмотрении объектов выделяется то, что объекты принадлежат одному или нескольким классам, которые определяют поведение (являются моделью) объекта.
Заметь, ни слова про принципы тут нет. И про наследование в том числе.
>некоторая сущность в виртуальном пространстве, обладающая определённым состоянием и поведением, имеющая заданные значения свойств (атрибутов) и операций над ними (методов)
Под это определение подходит вообще все что угодно. Структуры в сишечке, получается - тоже объекты.
Используй индексы элементов вместо указателей.
>Структуры в сишечке, получается - тоже объекты.
Так и есть, вообще-то. ООП в Си было еще до того, как ты родился. C++ просто сахарку туда добавил.
>Так и есть, вообще-то
Скорее наоборот - ООП просто не существует. Это чисто умозрительная вещь без формального определения, ведь объектами можно назвать все что угодно, соответственно любое программирование будет "объектно-ориентированным".
http://ideone.com/CpZaEe
Суть такова:
Класс парсит текстовый файл вида
Точка: Инфа 1
Точка: Инфа 2
Точка: Инфа ...
Точка: Инфа n
доставая инфу, находящуюся после лексемы "Точка: ".
Каков шанс, что меня возьмут на работу кодером. И если возьмут, то на какую должность и оклад? Ответы желательно обосновывать.
Лолблять. Это уровень лабы первого курса.
Так что если и возьмут куда, то только полным стажером.
Олсо учти, что комментарии на русском часто считаются зашкваром (от конторы зависит). Названия же переменных и методов вроде "Chislo" - 100% зашквар.
Да и от стажеров обчно как можно больше требуют. Те же Qt/Boost, например.
Большинство компаний рассчитаны на международное сотрудничество и твой код могут отправлять доделывать индусам, китайцам, австралийцам и т.п.
Как же комментарии читать, если они не на русском?
>твой код могут отправлять доделывать индусам, китайцам, австралийцам и т.п.
А я тогда нахуя нужен?
Потому что.
Если ты знаешь английсикй - то и называй все на нем, просто для единообразия и лучшей читаемости (нормальный английский читается куда лучше транслита же).
Если не знаешь - ну что ж, программировать можно и без знания английского, но это ОЧЕНЬ большой минус. Если не на 1С писать собрался.
>Люди не думают категориями команд или функций
Ну да, они думают про байты, портянки <си<плюс<плюс<говна>>>>, и сегфолты
>Ясно
Ну давай рассказывай, как до жизни такой дошел что надо несколько разных коммандных строк приходится в одной прогремме парсить.
>>480337
>То есть надо ещё пердолиться с ручным копированием, хотя оно должно быть по умолчанию.
Какое еще ручное копирование? Ты знаешь что такое оператор копирования? Ты можешь создать копию options_description? В чем вообще может быть пробема создать копию объекта?
Мань, в с++ классы - это просто структуры, которым описали, как нужно быть классом (долеплять this к 1му аргументу и проверять чтобы типы совпадале при конпеляции) и фсё! Больше ничего нет. Код, сгенерированный в итоге - это машинный понос, поток команд и байтов, которые ничего не значат, но посколько до компеляции у всего этого говна была структура она слабо-вяло как-то умудряется работать. Но! Для этого нужно, чтобы невыхождение за пределы этой мниной, теперь уже, структуры соблюдалось по математическому доказанию. А это невозможно, ну хотя бы потому, что по дефолту я могу *( 0) = "hui"; и меня никто от этого не остановит. С++ реально оочень заёбистый язык. Он оочень ебёт мозги, вот я знаю профессора, так он так же думает.
HTML+CSS+JS.
> Код, сгенерированный в итоге - это машинный понос, поток команд и байтов
Что-то проиграл с этого. Хачкель, наверное, магией выполняется.
Он компилируется в профессора, который решает диффуры на бумажке со скоростью света. Профессор при этом завернут в оную бумажку как в монаду, чтобы избежать побочных эффектов.
C++ Builder XE8 - FireMonkey.
FireMonkey (FMX) — GUI-библиотека, использующая возможности графического процессора. Является кроссплатформенной: поддерживаются Windows, Mac OS, Apple iOS и Android.
Табы вместо пробелов, транслит в названиях переменных, ничего не говорящие названия переменных (типа S1), комменты на русском, комменты там, где они на хуй не нужны, использован билдер, нет пробелов между операторами и операндами. Дальше даже читать не могу, глаза вытекают. За такой код в любой фирме будут пиздить палками, пока не научишься писать нормально, а вероятнее сразу выгонят.
Но у меня большой опыт работы с крестами, потому и говорю - говно он.
>>480394
Нет метаинфы, нет никаких проверок, вообще ничего. Когда-то это было круто, но сейчас у редкой машины найдёшь меньше 1 гб оперативы, поэтому юзлесс говно без задач. Ах да с++ - самый уязвимый язык, чуть что он переполняет всю хуйню и пиздец: роп, кладбище, пидор.
есть dll - com-копонента написанная на с++ и скомпилированная в начале 2000х, при попытке подключения на свежую 1с-платформу говорит что интерфейс не поддерживается
есть описание правильного интерфейса, который сейчас актуален
можно ли написать обертку вокруг этой dll, и запихнуть это все в новую dll, зарегить как com-объект и юзать?
>Табы вместо пробелов
Они лучше видны.
>транслит в названиях переменных
Нет, блять, лучше уж всякие lpsz и т.п. ебучая хуита.
>ничего не говорящие названия переменных (типа S1)
Там комментарий стоит.
>комменты на русском
На японском их штоле писать?
>комменты там, где они на хуй не нужны
От коменттов хуже не будет.
>использован билдер
Он тебе чем не угодил?
>нет пробелов между операторами и операндами
Есть, просто не везде. Где текста немного их можно и не ставить.
>Дальше даже читать не могу, глаза вытекают.
Твои проблемы. У нормальных людей всё читается.
>За такой код в любой фирме будут пиздить палками, пока не научишься писать нормально, а вероятнее сразу выгонят.
Охуеть аргумент.
>Табы вместо пробелов
Они лучше видны.
>транслит в названиях переменных
Нет, блять, лучше уж всякие lpsz и т.п. ебучая хуита.
>ничего не говорящие названия переменных (типа S1)
Там комментарий стоит.
>комменты на русском
На японском их штоле писать?
>комменты там, где они на хуй не нужны
От коменттов хуже не будет.
>использован билдер
Он тебе чем не угодил?
>нет пробелов между операторами и операндами
Есть, просто не везде. Где текста немного их можно и не ставить.
>Дальше даже читать не могу, глаза вытекают.
Твои проблемы. У нормальных людей всё читается.
>За такой код в любой фирме будут пиздить палками, пока не научишься писать нормально, а вероятнее сразу выгонят.
Охуеть аргумент.
>Они лучше видны.
Мы вам перезвоним.
>Нет, блять, лучше уж всякие lpsz и т.п. ебучая хуита.
http://c2.com/cgi/wiki?GoodVariableNames
>Там комментарий стоит.
Это уродское решение, каждый раз искать этот комментарий, чтобы посмотреть, что делает переменная. См. предыдущий пункт.
>На японском их штоле писать?
Белые люди пишут на английском. Даже в самых обоссанных пидорашьих конторах.
>От коменттов хуже не будет.
Будет. Это показывает твою некомпетентность и неспособность отличить, где нужен комментарий, а где нет. Перезвоним, короче.
>Он тебе чем не угодил?
Тем, что это говно нигде не используется, кроме усть-задрищенских шараг, застрявших в 80-х.
>Есть, просто не везде. Где текста немного их можно и не ставить.
Можно вообще все в одну строчку писать для экономии места. Нам ведь главное место сэкономить на жестком диске (блять, пишу и ржу на всю комнату), а не читаемый код написать.
>Твои проблемы. У нормальных людей всё читается.
Ясно-понятно. Даже не пытайся куда-то устраиваться на работу, обоссут так, что до старости будет вонять.
>Охуеть аргумент.
Но это на самом деле так. Твоя шарага не имеет ничего общего с реальным миром, проснись.
Боб Мартин «Чистый код».
За всю вот эту хуйню, что ты городишь, он тебе нормально пояснит. Пока не прочитаешь — будешь сидеть без работы (мы вам перезвоним).
Могу порекомендовать еще Александреску C++ Coding Standards: 101 Rules, Guidelines, and Best Practices
> Скорее наоборот - ООП просто не существует. Это чисто умозрительная вещь без формального определения, ведь объектами можно назвать все что угодно, соответственно любое программирование будет "объектно-ориентированным".
У понятия ООП был когда-то смысл, да умер.
http://loup-vaillant.fr/articles/deaths-of-oop
Все очень плохо.
1. Русский вместо языка.
2. Ни о чем не говорящие названия переменных.
3. Ручное управление памятью, delete вот это все.
4. Тесты к этому в принципе не прикрутишь.
5. И, главное: нихуя не понятно, что делает этот код. Вижу набор буковок, не вижу алгоритм. Код должен читаться, как текст на английском, а у тебя какая-то обфускация.
Кароч, читай Боба Мартина "Agile principles patterns and practices" и серию "C++ in depth".
>У понятия ООП был когда-то смысл, да умер
Странно, что оно вообще взлетело. Ведь ООП в классическом варианте с наследованием предполагает построение универсальной иерархической модели данных программы. А как нам подсказывает реляционное исчисление, такая модель в принципе существовать не может. Это еще сам Страуструп признал на одной из ранних конференций по базам данных - ООП с реляционной моделью не дружит. При этом у реляционной модели есть математический базис, а у ООП - нет. Но тогда из этого вывод никто не сделал, вот и мучаются до сих пор.
Понятно, что чем хуже спроектирована система, тем больше у всех проблем, больше работы, больше рабочих мест, выше занятость, лучше для экономики. Но это не путь прогресса. Олсо ФП - далеко не серебряная пуля, и отказываться от мутабельности вообще - не самая лучшая идея, я считаю.
> Не вижу принципиальной разницы между take( person, iron ) и person.take( iron )
Код однохуйствененн лол, с точки зрения конечного скомпилированного.
>>480218
Маня! Мань. Но анон выше всё написал ужасно правильно, на вход функции классов получают 1м аргументом, ВНИМАНИЕ, this. Представь себе. Откуда ты думаешь он там? Конпелятор неявно добавляет туда этот нехитрый указатель.
Двачую вот этого. Каждый раз при попытке сделать, чтоб было удобно и хорошо приходишь к тому, что приаеры удачного разделения на подклассы хорошо раотают только в книжке, в реальности каждый раз что-то да мешает идеально распилить объекты как тебе надо.
> Но тогда из этого вывод никто не сделал, вот и мучаются до сих пор.
Ну почему же мучаются. В языки (не в С++) завели интерфейсы, типажи, примеси, так что наследование — не единственный вариант полиморфизма.
>В языки завели и продолжают завозить
Это я имел в ввиду под "мучаться".
>наследование — не единственный вариант полиморфизма
Это уже во времена создания джавы было понятно, поэтому там полиморфизм описывается через интерфейсы.
>В языки (не в С++) завели интерфейсы, типажи, примеси
В С++ это все и так есть. С виртуальным наследованием и CRTP можно делать любые подобные штуки.
Блять, ты тупой совсем? Мы говорим о коде, сука, о том, что человек пишет, а не о компиляторе. Компилятор в итоге все в нолики и единички превращает, даже твой хачкиль или на чем ты там пишешь.
Эй, байтушня, сравни
[code lang="scala"]import scala.io.Source
object Main extends App {
\tdef parse(source: Source) = {
\t\tval regex = "^Точка: (.*)$".r
\t\tsource.getLines.collect {
\t\t\tcase regex(data) ⇒
\t\t\t\tdata
\t\t}
\t}
\t
\tval source = Source.fromFile("123.txt")
\tparse(source).foreach(println)
}[/code]
Что сравнивать то? Содержание функции fromFile с её вызовом? Да, при вызове будет меньше кода, ты прав.
#include <QtCore>
int main(int argc, char argv)
{
QStringList sourceLines = QString("Точка: 123\r\nТочка: \r\nТочка: yoba").split("\r\n");
QRegExp rx("^Точка: (.*)$");
foreach (const QString &line, lines) {
if (rx.indexIn(line) >= 0)
qDebug() << rx.cap(1);
}
return 0;
}
[/code]
Хорошо тред успел обновить, а то то же самое писать начал, уж больно жабопердолик наглый, затроллил меня.
Ну я то их использовал из-за скудоумия своего. А ты то дохуя погромист, мог бы и без них обойтись? И да, в задаче было именно из файла, а не из строки, да ещё к тому же которую ты сам так невзначай тут придумал, лол.
>>480676
Тебя это тоже касается.
Дельцы такие, ппц. Вы все условия задачи соблюдите, кода то и поприбавится. И да, 30% кода там для отладки, просто не удалил когда постил.
>А ты то дохуя погромист, мог бы и без них обойтись?
>А ты то дохуя погромист, мог бы и без операционной системы обойтись?
>А ты то дохуя погромист, мог бы и без компьютера обойтись?
Нет, мартышка, понимаешь, если ты пишешь портянки байтоговна, когда это делается одним вызовом стандартной библиотеки, то ты не программист а петух.
Второй раз не прокатит, придется придумывать новые способы развода треда на лабы. А писать код ты так и не научишься.
Пидора ответ. Что характерно, я в пиздежь про лабу не поверил. Здешние шаражники до такого хитрого плана бы не додумались.
480688-кун
А я тебе говорю о том, что код - полная хуйня, единственная его задача это превращатся в машинные комманды и быть при этом достаточно удобочитаемым и юзабельным для человека. С++ очень хуёво читается и поэтому он говно.
Есть prog.h, prog.cpp, some_class.h, some_slass.cpp.
В some class используются структуры из prog.h, как их правильно подключить?
Как правильно подключить some_class к prog?
Обычным инклудом или использовать forward declaration.
Прозреваю, что ты забыл защиту от повторного включения.
Нет, я юзаю #pragma once для хедеров. Можешь чуть подробнее расписать?
Сейчас prog.h инклудится в prog.cpp и some_class.h, но резолвится не все.
Ну хуй знает, попробуй:
http://en.wikipedia.org/wiki/Ch_%28computer_programming%29
А нафига оно тебе? Не проще какой-нибудь скриптовый язык для этого использовать?
Чот я тупанул.
Я пытаюсь найти свой путь, Стивен мне тут не поможет.
> Гугление даёт только калькулятор со скобками
Ну, осталось добавить туда переменные и функции. Переменная реализуется простой заменой - встретив переменную пушиш в стек ее значение. С функциями сложнее, хотя особо сложного нет, просто оператор по типу тех что есть, но у тебя там скорее только инфиксные с двумя аргументами, тогда как функция - префиксный с различным количеством аргументов, нужно серьезно допиливать алгоритм.
Посмотри в сторону готовых библиотек для символьных вычислений:
http://www.ginac.de/
http://issc.uj.ac.za/symbolic/symbolic.html
http://viennamath.sourceforge.net/
http://muparser.beltoforion.de/
Я загружаю функции из dll. Говнокод ли объявлять глобально указатели на них?
Как вообще это красиво оформлять в проектах?
template<typename T, typename... R>
A<T> func(R&&... args);
template<typename T>
class A
{
template<typename U, typename... R>
friend A<U> func(R&&... args);
...
};
[/CODE]
Можно так. А теперь я хочу, чтобы для класса другом была та функция, у которой первый тип совпадает с типом класса, что-то типа такого:
[CODE]
template<typename T, typename... R>
A<T> func(R&&... args);
template<typename T>
class A
{
template<typename... R>
friend A<T> func<T, R...>(R&&... args);
...
};
[/CODE]
Чо делать?
template<typename T, typename... R>
A<T> func(R&&... args);
template<typename T>
class A
{
template<typename U, typename... R>
friend A<U> func(R&&... args);
...
};
[/CODE]
Можно так. А теперь я хочу, чтобы для класса другом была та функция, у которой первый тип совпадает с типом класса, что-то типа такого:
[CODE]
template<typename T, typename... R>
A<T> func(R&&... args);
template<typename T>
class A
{
template<typename... R>
friend A<T> func<T, R...>(R&&... args);
...
};
[/CODE]
Чо делать?
Ну хуй знает, я бы запилил что-нибудь типа:
#ifdef YOBA_LIB_MACRO
#define MY_FUNC_PTR_1 ...
#define MY_FUNC_PTR_2 ...
#endif
Тут нет никакой частичной специализации, просто задается ограничение на права пользования. Я не перестаю верить, что решение есть. Тем более, какие потенциальные дырки ты видишь в такой архитектуре? Допустим моя функция задает какое-то альтернативное страшное правило для конструирования объекта.
> какие потенциальные дырки ты видишь в такой архитектуре?
Главная дырка – нарушение инкапсуляции.
> нет никакой частичной специализации
> ограничение на права пользования
Которую можно было бы запилить частичной специализацией.
> не перестаю верить, что решение есть
Можно попробовать запилить какую-нибудь перегрузку, но изъёбов меньше не станет.
> функция задает правило для конструирования объекта
Может быть ей нужно быть статическим методом?
friend'ы - нарушение инкапсуляции? Чего?
>Частичная специализация позволяет частично настроить код шаблона для определенных типов
Здесь преследуются совершенно иные цели.
На самом деле пилится make_shared. Да, надо сделать статический метод и обернуть его в make_shared, отличная идея, спасибо.
> friend'ы - нарушение инкапсуляции? Чего?
А как тогда назвать конструкцию, которая позволяет обращаться к закрытым членам класса и при этом сама не является частью класса?
> На самом деле пилится make_shared
> задается ограничение на права пользования
Что за ограничения в make_shared?
То есть, я правильно понял, что friend'ы по-твоему - деприкатед? Это же сущая дичь.
Да я ж говорю, чтобы make_shared типа A ненароком не залез в shared_ptr типа B, в первом куске кода такое возможно, я пока не думал, кем нужно быть, чтобы такое сделать, но там на это явного запрета в коде нет, а я хочу, чтобы был, просто чтобы был. Ладно, чего-то лучше самому подумать.
Хотя тут тоже используется friend-функция allocate_shared, которая вызывает private конструктор, которому передаётся тег, который говорит, что конструктор вызывается из make_shared охуеть, блять:
https://github.com/gcc-mirror/gcc/blob/master/libstdc%2B%2B-v3/include/bits/shared_ptr.h
Вот это поворот, до того чтобы заглянуть в исходники стл я не додумался, ну, наверное, вопрос решен.
> friend'ы по-твоему - деприкатед? Это же сущая дичь.
Ну хуй знает, довольно специфичная вещь, хотя libstdc++ во всю их использует.
Они настолько же deprecated, насколько прямой доступ к памяти с голыми укзателями небезопасны. То есть с одной стороны вроде так и есть, а с другой - зачастую ими сделать что надо тупо проще и проблем не вызовет никаких (если разумно делать).
Да тут всё по калу сделано, как в первом варианте, значит это норма.
>>481197
Не, ну ясное дело, что лепить их надо в меру и по возможности сужая их круг видимости до того, что им действительно нужно. В самом деле, порой сделать 10 классов-хелперов, запутать все наследованием или ещё какими костылями для модифицируемости кода может быть гораздо хуже, чем такая хрень, ладно, пустой разговор в общем.
Всем спасибо.
А всё потому, что в крестах нет package-local видимости.
>А как тогда назвать конструкцию, которая позволяет обращаться к закрытым членам класса и при этом сама не является частью класса?
Костыль при отсутствии нормальной модульности. Инкапсуляция - это не ограничение к доступу полей класса, а вообще произвольное ограничение видимости. В С++ модулей нет, и нет возможности управлять видимостью на уровне модулей, поэтому в язык и добавили friend.
> и при этом сама не является частью класса
Она объявляется внутри класса, значит является частью класса.
В тех же исходниках libstdc++ weak_ptr является friend-ом у shared_ptr. Значит ли это, что weak_ptr является частью shared_ptr? Или это утверждение распространяется только на функции? Если friend функция является частью класса, то почему я не могу обратиться к ней как к методу?
>>481295
> нет возможности управлять видимостью на уровне модулей, поэтому в язык и добавили friend.
Не очень понимаю, как это связано?
>Не очень понимаю, как это связано?
В С++ нет возможности сказать: эти классы принадлежат к одному модулю, и имеют приватный доступ друг к другу.
> Значит ли это, что weak_ptr является частью shared_ptr?
Синтаксически да. Точно такого же результата можно было добиться объявив weak_ptr вложеным классом в shared_ptr, сделав его при этом публичным. Но это не слишком удобно в плане композиии кода, поэтому их объявили как отдельные сущности, связав вместе одной строчкой. Другое дело что никакого как бы смысла в том что weak_ptr является частью shared_ptr нет, по своей сути он не является его частью, просто такой синтаксический трюк чтобы упростить код.
В шапке же сказано, что дауны с лабами идут на хуй, долбоёб.
Ну так что же ты не пишешь, раз НУЖНО?
[code lang="cpp"]
const char Symbol = 'X';
QStringList lines = BDirTools::readTextFile("/path/to/file", "UTF-8").split(QRegExp("\r?\n+"), QString::SkipEmptyParts);
QtConcurrent::filter(lines, [](const QString &s){return s.startsWith(Symbol) && s.endwSith(Symbol);}).wait();
qDebug() << lines.size();
[/code]
[code lang="scala"]Source.fromFile("allah.txt")
.getLines
.filter(line => line.head == '#' && line.last == '#')
.size
[/code]
338. Войска, назначаемые для отдания воинских почестей при погребении, составляют почетный эскорт.
Почетный эскорт назначается при погребении военнослужащих, граждан, призванных на военные сборы, погибших при прохождении военной службы или умерших в результате увечья (ранения, травмы, контузии), заболевания; граждан, уволенных с военной службы по достижении предельного возраста пребывания на военной службе, состоянию здоровья или в связи с организационно-штатными мероприятиями, имеющих общую продолжительность военной службы 25 лет и более; участников войны, а также граждан, имевших особые заслуги перед государством.
339. Организация похорон военнослужащих, погибших (умерших) при прохождении военной службы, возлагается на их прямых начальников, а остальных лиц, при погребении которых назначается почетный эскорт, — на начальника гарнизона (городского или районного военного комиссара).
340. Почетный эскорт назначается в следующем составе:
при погребении солдат (матросов), сержантов (старшин) и прапорщиков (мичманов) — отделение, взвод или соответствующее им подразделение;
при погребении офицеров, а также военнослужащих и граждан, удостоенных звания Героя Советского Союза, Героя Российской Федерации, награжденных орденом Славы трех степеней, — взвод, рота или соответствующее им подразделение.
При погребении умерших участников войны в воинских званиях рядовой (матрос), сержант (старшина), прапорщик (мичман) и младших офицеров, исходя из организационно-штатных возможностей воинских частей и их удаления от места захоронения, почетный эскорт назначается в составе отделения.
Почетный эскорт, назначаемый в составе от взвода и больше, должен быть со Знаменем без чехла и с траурной лентой.
341. Кроме почетного эскорта на погребение назначаются:
оркестр;
почетный караул к гробу;
* солдаты или матросы для опускания гроба в могилу (8 — 10 человек) без оружия под командой сержанта (старшины).
Для перевозки гроба с телом покойного выделяется автомобиль или лафет орудия.
Для несения орденов и медалей назначается по одному человеку на каждую подушечку с орденом или с медалями, причем при погребении офицеров для этого назначаются офицеры, а при погребении прапорщиков (мичманов), сержантов (старшин) и солдат (матросов) — прапорщики (мичманы), сержанты (старшины) или солдаты (матросы).
Каждый орден прикрепляется к отдельной подушечке. Медали могут прикрепляться по нескольку на одной подушечке.
На крышке гроба прикрепляется головной убор, а для военнослужащих Военно-Морского Флота (кроме военнослужащих срочной службы) и кортик умершего.
342. Почетный эскорт и наряд на погребение военнослужащего, умершего в своей воинской части, назначаются командиром этой части. О времени и месте выноса и погребения тела покойного сообщается военному коменданту гарнизона.
В случае смерти военнослужащего вне места его постоянной службы почетный эскорт и наряд на погребение назначаются начальником гарнизона по месту смерти военнослужащего.
338. Войска, назначаемые для отдания воинских почестей при погребении, составляют почетный эскорт.
Почетный эскорт назначается при погребении военнослужащих, граждан, призванных на военные сборы, погибших при прохождении военной службы или умерших в результате увечья (ранения, травмы, контузии), заболевания; граждан, уволенных с военной службы по достижении предельного возраста пребывания на военной службе, состоянию здоровья или в связи с организационно-штатными мероприятиями, имеющих общую продолжительность военной службы 25 лет и более; участников войны, а также граждан, имевших особые заслуги перед государством.
339. Организация похорон военнослужащих, погибших (умерших) при прохождении военной службы, возлагается на их прямых начальников, а остальных лиц, при погребении которых назначается почетный эскорт, — на начальника гарнизона (городского или районного военного комиссара).
340. Почетный эскорт назначается в следующем составе:
при погребении солдат (матросов), сержантов (старшин) и прапорщиков (мичманов) — отделение, взвод или соответствующее им подразделение;
при погребении офицеров, а также военнослужащих и граждан, удостоенных звания Героя Советского Союза, Героя Российской Федерации, награжденных орденом Славы трех степеней, — взвод, рота или соответствующее им подразделение.
При погребении умерших участников войны в воинских званиях рядовой (матрос), сержант (старшина), прапорщик (мичман) и младших офицеров, исходя из организационно-штатных возможностей воинских частей и их удаления от места захоронения, почетный эскорт назначается в составе отделения.
Почетный эскорт, назначаемый в составе от взвода и больше, должен быть со Знаменем без чехла и с траурной лентой.
341. Кроме почетного эскорта на погребение назначаются:
оркестр;
почетный караул к гробу;
* солдаты или матросы для опускания гроба в могилу (8 — 10 человек) без оружия под командой сержанта (старшины).
Для перевозки гроба с телом покойного выделяется автомобиль или лафет орудия.
Для несения орденов и медалей назначается по одному человеку на каждую подушечку с орденом или с медалями, причем при погребении офицеров для этого назначаются офицеры, а при погребении прапорщиков (мичманов), сержантов (старшин) и солдат (матросов) — прапорщики (мичманы), сержанты (старшины) или солдаты (матросы).
Каждый орден прикрепляется к отдельной подушечке. Медали могут прикрепляться по нескольку на одной подушечке.
На крышке гроба прикрепляется головной убор, а для военнослужащих Военно-Морского Флота (кроме военнослужащих срочной службы) и кортик умершего.
342. Почетный эскорт и наряд на погребение военнослужащего, умершего в своей воинской части, назначаются командиром этой части. О времени и месте выноса и погребения тела покойного сообщается военному коменданту гарнизона.
В случае смерти военнослужащего вне места его постоянной службы почетный эскорт и наряд на погребение назначаются начальником гарнизона по месту смерти военнослужащего.
Т.к. самый низкий язык на доске - С, то задам вопрос сюда.
Думаю, что многие сталкивались.
Вопрос такой, почему если закомментить invoke MessageBoxA, то код работает?
Если не комментить, то в стеке перед выходом остаётся какая-то еденица, хотя мессадж бокс, как и почти остальное винапи пишет ответ в eax?
У меня еденица нигде не записывается. Стек раскручиваю правильно. На каждый пуш, есть поп.
FASM
http://pastebin.com/bRUsyeTP
Вопрос снят.
Обосрался с размерами регистров.
Должно быть pop eax.
А то он со стека по 2 байта снимал.
В то время как push 7, например, добавляет в стек 4 байта.
Соррян, затупил.
В пизду уроки на 16 битных системах
Задание в унике (иначе отчислен):
Сдвинуть биты в каждом байте циклически вправо на
случайное число N из диапазона 0..7
Пример:
0xDEADBEEF
0xB76BAFFB
(N = 2)
Как мне объясняли толковые люди нужно:
1) зарандомить число от 0-7
аля
srand(time(NULL));
unsigned int shift = rand() & 7;
2) ввести число и сдвинуть его побитово на вправо на 7
3) далее нужно sizeof инта * на какое-то число и применить операцию или (вроде побитовое или)
В общем есть идеи по коду, советы, подсказки?
На пиках рабочий код, но мне нужно его сократить.
(убрать указатели, использовать хотя бы 1 функцию или желательно все сделать в main'е. В общем сделать очень простой и читаемый код.)
> На пиках рабочий код, но мне нужно его сократить.
Так что же ты не делаешь, раз нужно? За работу, маня
Да я просто в больнице лежу, ничего кроме ноутбука нет, а он старше моей кошки и в чем-либо более новом виснет наглухо.
Надо именно с квадратными скобками
[a] -> [a ,b ]. Собственно, релейтед.
Антош, помоги, будь бобр.
> Алсо, это ещё и с WinApi надо запилить. Нахуя оно тут - не понятно, но НАДО.
Съёбывай с этой шараги
Если кто и обижен, то ты мозгами от природы. К вашей школопомойке, именуемой /b/, я и на километр не подойду.
Только в этом треде.
> Бамп вопросу.
Там же очевидная очепятка, альтернативная форма должна выглядеть как chessBoard(row, collumn) в задании явно написано что нужно перегрузить operator() а не operator[]
Три часа уже не могу нагуглить(
пикрандом
pustajaForma.narisovatLiniju();
> WinAPI
Бросай это дело. Я пытался осилить этот мелкомягкий говнокод, но тщетно. Надо быть настолько же альтернативно одаренным, как и его создатели, чтобы понять каким образом оно работает. Как альтернативу могу порекомендовать Qt.
Неосилятор, WinAPI объектно-ориентированная библиотека, все там понятно. Но Qt двачую за кроссплатформенность.
> Братишка, я тебе оконынй фреймворк принес
НАХУЙ ТЫ MFC ПРИНЕС, СОВСЕМ МУДАК ШТОЛЕ?!
На WinAPI будет так: http://pastebin.com/vvgpjDJn
Соответвенно, в MFC убери dc.TextOut(...) и добавь dc.MoveToEx(...) / dc.MoveTo(...), затем dc.LineTo(...), где объект dc используется вместо первого параметра hDC. Вот здесь есть пример с линями: http://www.firststeps.ru/mfc/steps/r.php?10
А теперь сравни:
[code lang="cpp"]
#include <QtWidgets>
int main(int argc, char argv)
{
QApplication app(argc, argv);
QGraphicsScene scene;
scene.addLine(0.0, 300.0, 800.0, 300.0);
QGraphicsView view(&scene);
view.setFixedSize(800, 600);
view.show();
return app.exec();
}
[/code]
Преимущество еще и в том, что QGraphicsScene работает через аппаратное ускорение (DX или OGL в зависимости от системы/сборки), а вот GDI - хуй его знает, он может и через процессор все считать.
Да хуй с ним, с ускорением, но с количества кода для лабы я проиграл. Одно создание окна почи как весь код на Qt:
[code lang="cpp"]
hWnd = CreateWindowExW(0,
szMainWindow, szAppTitle,
WS_OVERLAPPEDWINDOW,
GetSystemMetrics(SM_CXSCREEN) / 2 - WIDTH / 2,
GetSystemMetrics(SM_CYSCREEN) / 2 - HEIGHT / 2,
WIDTH, HEIGHT,
NULL, NULL, hInst, NULL);
[/code]
И, кстати, что-то не увидел ни одного объекта, только структуры и процедурная портянка.
Да хуй с ней, с процедурной портянкой. Даже GTK+ выглядит приятней и понятней, чем это спермоговно.
Объясни преподу, что это можно сделать проще и красивее. Если он не конченый старпер, то поймет.
Полезная лаба, кстати, привыкнешь к говну сейчас – проще будет работать с говном дальше.
Специально дает лабы на винапи, чтобы ты потом лечиться к ней пошел.
Вот например условие (a && b && c).
Проверяется выражение 'а'. Если оно равно false, то будет ли проверяться значение b?
нет. операнды вычисляются слева-направо. это значит, что даже параметры функции не будут вычислены, по не дойдет очередь до них.
|| точно также рабоатет. после true не вычисляется.
по 15му стандарту КРЕСТОКОМПИЛЯТОР должен эвристически вычислить наиболее оптимальную последовательность вычисления бульских значений
например гцц собирает статистику нажатия на клавиш
ведь человеку свойственно набирать false-выражения несколько медленей
вся эта информация логируется и помогает КРЕСТОКОМПИЛЯТОРУ производить самые лучшие программы в мире
Да ладно, бэкэнд можно хоть на тех же крестах пилить, хоть на хачкеле, наверное даже не баше можно. Другое дело что HTML/CSS/JS, это да.
Пишу cout<<1234.56789; выводит 1234.57
Как вывести 1234.56789?
>В таком случае, все используемые программой потоки закрываются, и временные файлы удаляются, и, наконец, управление возвращается ОС или другой программе.
На закрытие потоков и удаление файлов тоже время тратится. Есть способ чтобы моментально завершалась программа? А как переопределить закрытие потоков и удаление файлов чтобы он время после выполнения этих операций выводил? Для деструкторов было легко.
>Есть способ чтобы моментально завершалась программа?
Запросто:
[code lang="cpp"]
(char )0 = 0;
[/code]
Какой код будете быстрее?
[code lang="cpp"]
auto t = _float / 8;
[/code]
VS
[code lang="cpp"]
auto t = static_cast< unsigned int > (_float) >> 3;
[/code]
[code lang="cpp"]
#include <stdio.h>
#include <unistd.h>
char buff[10];
sprintf(buff, "%i", getpid());
std::string cmd = std::string("kill ") + buff;
system(cmd.data());
[/code]
Собираюсь уволиться с работы , чтобы наконец нормально вкатиться в pr.
Но Дело в том, что у меня с постановкой задач для самого себя возникают проблемы. Почитаю книги, напишу пару прог, а дальше что-то делать мотивации не сильно хватает (в общих чертах)
В общем, ищу Ментора)
Который задаст вектор и чуть поможет советами в плане : на что обратить внимание, а на что нет.
Как то так.
спасибо)
P.S ^ C++ - язык
Немного не туда ты пришёл, тут в большинстве студенты. Может быть, qt-пидор тебе поможет, хотя он тоже, вроде бы, в этом году выпускается. А так задавай свои ответы.
Хочется читать именно по 4 байта, потому что цель -- посчитать 32-битную чексумму.
char bitword[4] = { 0 };
if ( file >> bitword )
{
std::cout << bitword << " ";
}
выводит целиком первое слово файла, если переменная заполняется всего разок и размер у нее 4 байта?
Правда. Но строку ограниченной длины, все-таки. А первое слово выводится, даже если оно длиннее 4 байт.
Не cout, а file, конечно же.
Тогда все понятно. Спасибо!
Сейчас влез в чужой проект и мне надо оценить, насколько просто и возможно изменить архитектуру иконочек.
CreateDIBitmap() винапишная может как-нибудь предоставлять Transparency?
Полную? (чтобы на картинке были невидимые области)
Частичную? (чтобы картинка была видна, но просвечивала)
if ( file >> bitword )
{
std::cout << bitword << " ";
}[/code]
тест
[code lang="java"]
InputStream stream = new FileInputStream("1.txt");
byte[] buffer = new byte[];
stream.read(buffer);
[/code]
Хули ты пиздишь. Работает не хуже чем твоя мамаша ртом.
Всосал, аутист?
[CODE]m(T1), m(T2)[/CODE]
Да, в мире огромное количество легаси кода, использующего винапи. Возможно, что тебе когда-нибудь придётся покопаться в этом дерьме.
Для случая с nullptr добавляешь еще один коструктор
m(std::nullptr_t nullp) : m((T2*)nullptr) {}
Я с NULL наверное нихуя не сделать, касти его к указателю на T2 или к nullptr когда передаешь в конструктор. Ну или #define NULL nullptr но таким лучше не заниматься.
[code lang="cpp"]#include <ctime>
#include <random>
using namespace std;
class NameGen{
private:
int rnd_sml, rnd_cap;
char arr[6];
const char* alphab[4] ={
{"AEIOUY"},
{"BCDFGHJKLMNPQRSTVWXZ"},
{"aeiouy"},
{"bcdfghjklmnpqrstvwxz"}
};
public:
string genName()
{
for(int i=0; i< rand() % 6 + 2; ++i){
rnd_sml = rand() % 2 + 2;
rnd_cap = rand() % 2;
arr = alphab[(i==0) ? rnd_cap : rnd_sml]
[(i==0) ? ((rnd_cap==0) ? rand() % 6 : rand() % 20) : ((rnd_sml==2) ? rand() % 6 : rand() % 20)];
}
return arr;
}
}
int main()
{
srand(time(0));
//Тут вызов genName();
return 0;
}[/code]
[code lang="cpp"]#include <ctime>
#include <random>
using namespace std;
class NameGen{
private:
int rnd_sml, rnd_cap;
char arr[6];
const char* alphab[4] ={
{"AEIOUY"},
{"BCDFGHJKLMNPQRSTVWXZ"},
{"aeiouy"},
{"bcdfghjklmnpqrstvwxz"}
};
public:
string genName()
{
for(int i=0; i< rand() % 6 + 2; ++i){
rnd_sml = rand() % 2 + 2;
rnd_cap = rand() % 2;
arr = alphab[(i==0) ? rnd_cap : rnd_sml]
[(i==0) ? ((rnd_cap==0) ? rand() % 6 : rand() % 20) : ((rnd_sml==2) ? rand() % 6 : rand() % 20)];
}
return arr;
}
}
int main()
{
srand(time(0));
//Тут вызов genName();
return 0;
}[/code]
За сколько получится. Нужна просто отправная точка, чтобы и не учить много лишнего и подводных камней не сильно бояться.
Да, проблема только с NULL - кастить не выход, я пишу это говно для пользователя, которого не ебет. Я сделал проще, тот что в интерфейсе оставил указателем, а то что нужно было в кишка сделал ссылкой, появилась пара лишних звездочек и амперсандов, но по-моему это нормальное решение, учитывая что по логике тот что в кишках никогда и не должен работать с NULL/nullptr.
В 14 лет я спросил у бати: "Что такое программирование?", и он принес мне приклейтед. Как оказалось позже, это было больше актом философского откровения, нежели ответом на мой вопрос. Читай, нормально.
Хотя для NULL можно еще такое сделать
m(int nullp) : m((m*)NULL) {}
Но это не сильно переносимо, та и выглядит стремно. NULL лучше вообще не использовать.
Так-так-так... Четвертое издание вышло в 2013 году. Причем не факт, что твой батя купил эту книгу сразу после ее появления в продаже. И тогда тебе было 14. Сейчас 2015 год. А два года назад тебе было 14.
>приклейтед
>это было больше актом философского откровения
>Читай, нормально.
Да.
Уебал бы с вертухи тем кто всякие БИБЛИИ С++ сразу советует с чуть ли не полной спецификацией языка по которым можно хоть компилятор писать. Я из-за вас раз 10 уже дропал это говно.
Господи, каким же тупым себя чувствую(
Вот создаю я в 10-ой студии виндовс форм аппликатион. Далее, чтобы юзать все эти MoveTo() да LineTo() нужно знать девайс контекст формы. Собственно как его получить?
Я пытался писать GetDC(Form1), но студия пишет, что не может преобразовать тип HWND к HDC.
С примерами с сайта firststeps тоже не могу разобраться
Прочитал всё. Непонятная и задания скучные. Начал читать пикрелейтед и книга идеальная для новичка. Но только со своим гуям заебал. Нахуя он этой графике столько посвятил если она даже в стандарт не входит? Теперь посоветуйте книгу по 11ому стандарту на русском.
Это которая 2004 года? too old
char arr[6] - сгенерированное рандомное имя. дальше же идет присваивание arr = alphab.... , а потом return arr.
const char* alphab[4] - там дальше идет инициализация буквами из алфавита.
а насчет рандомных чисес даже не знаю. наверное, стоит все-таки изменить.
Да
я учу Си и Плюсы в свободное от работы время (пишу на других языках), все продвигается медленно, но я и не расчитывал что получится быстро. Написал я короче простенькое приложение, которое асинхронно ходит на криптобиржу и анализирует что там происходит. Хочу выкатить в продакшн (для тренировки)
собственно говоря вопрос - мы на работе для таких вещей используем chef, который сам деплоит енв и само приложение.
Какие решения для автоматизации деплоймента используете вы, какие best practices?
(на данный момент я планирую написать кукбук, который будет дергать scons для установки на енв)
template <class TYPE>
TYPE cmp(TYPE a, TYPE b)
{
\treturn a-b;
}
template <class TYPE>
void sort(TYPE(*mcmp)(TYPE,TYPE),int X3)
{
TYPE a,b;
//......
mcmp(a,b);
//......
}
Вопрос: как мне вызвать функцию sort из мэйна (предположим с типом int)?
[code lang="cpp"]
void TUIObj :: DrawPixelmap( CDC &dc, TPixelMap &pm, Long t, Long b, Long l, Long r, Long v, Long h)
{
\tASSERT(dc != NULL);
\tif ((t > b) || (l > r)) return;
\tif( pm.GetBitmap( dc ) )
\t{
\t\tCBitmap *old_bmp;
\t\tCDC memdc;
\t\tmemdc.CreateCompatibleDC( &dc );
\t\timg_bmp = CBitmap::FromHandle( pm.Bitmap() );
\t\tBLENDFUNCTION bf;
\t\tbf.BlendOp = AC_SRC_OVER;
\t\tbf.BlendFlags = 0;
\t\tbf.AlphaFormat = AC_SRC_ALPHA;
\t\tbf.SourceConstantAlpha = 0xFF;
\t\told_bmp = memdc.SelectObject( img_bmp );
\t\tdc.AlphaBlend(h, v, (r-l+1), (b-t+1), &memdc, l, t, (r-l+1), (b-t+1), bf);
\t\tmemdc.SelectObject( old_bmp );
\t\tmemdc.DeleteDC();
\t}
}
[/code]
pm.Bitmap() - HBITMAP с хедером BITMAPV5HEADER и цветовой маской 0xAARRGGBB.
В результате конечный цвет как-то ебануто инвертится. С чем это может быть связано?
[code lang="cpp"]
void TUIObj :: DrawPixelmap( CDC &dc, TPixelMap &pm, Long t, Long b, Long l, Long r, Long v, Long h)
{
\tASSERT(dc != NULL);
\tif ((t > b) || (l > r)) return;
\tif( pm.GetBitmap( dc ) )
\t{
\t\tCBitmap *old_bmp;
\t\tCDC memdc;
\t\tmemdc.CreateCompatibleDC( &dc );
\t\timg_bmp = CBitmap::FromHandle( pm.Bitmap() );
\t\tBLENDFUNCTION bf;
\t\tbf.BlendOp = AC_SRC_OVER;
\t\tbf.BlendFlags = 0;
\t\tbf.AlphaFormat = AC_SRC_ALPHA;
\t\tbf.SourceConstantAlpha = 0xFF;
\t\told_bmp = memdc.SelectObject( img_bmp );
\t\tdc.AlphaBlend(h, v, (r-l+1), (b-t+1), &memdc, l, t, (r-l+1), (b-t+1), bf);
\t\tmemdc.SelectObject( old_bmp );
\t\tmemdc.DeleteDC();
\t}
}
[/code]
pm.Bitmap() - HBITMAP с хедером BITMAPV5HEADER и цветовой маской 0xAARRGGBB.
В результате конечный цвет как-то ебануто инвертится. С чем это может быть связано?
Попробуй AABBGGRR, в .bmp цвета хранятся в обратном порядке.
есть событие формы load:
private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e) {
Graphics^ g = Graphics::FromHwnd(this->Handle);\t
Pen^ blackPen=gcnew Pen(Color::Black,3.0f);
g->DrawLine(blackPen,10,10,100,100);
}
это код должен рисовать жирную линию на форме, но этого не происходит. В совю очередь, если его скопировать в код button_click, то линия рисуется. В чем проблема?
> Form1_Load
> Form1
А по делу - это не в Load должно вставляться. Не помню, за что отвечает точно Load, т.к. давно не ебался с графикой, но точно не за рисование.
Нужен event типа LoadFinished или Paint или Draw, что-то такое. Поищи, короч.
>Анон, скажи мне, это говнокод?
да, даже очень, http://en.cppreference.com/w/cpp/string/byte/toupper
и я нихуя не понял, зачем ты разделил гласные и согласные, у тебя это нигде не используется
ifstream in("input.txt");
in.getline( in, inNumber, ' ');
[/code]
Выдает ошибку no matching function for call to 'std::basic_ifstream<char>::getline(std::ifstream&, std::string&, char)'
Почему? Вот же
istream& getline (istream& is, string& str, char delim)
Где я обосрался?
Я долбоеб, сам нашел.
Если Предположим я создаю массив с мопощью malloc или new не важно. В результате имею указатель на него. Что будет если я поиграюсь с ним с помощью ++ и --, а затем вызову free или delete то удалиться только элемент массива или весь массив?
А при вызове delete []?
А если я опереторома -- и ++ верну указатель на исходное место и опять вызову free или delete[]?
Второй вопрос. Если я определяю четыре инта расположенных в рамдомных частях кода. Место в куче закончилось. Освобождаю инты и хочу объявить структуру как раз размером а четыре инта. Займёт ли структура их места с учётом того что они в совершенно разных частях памяти и уж точно идут не по порядку.
Происходит ли фрагментация памяти и не накапливаются ли свободные кусочки памяти которые нельзя использовать поскольку туда ничего не влазит и получается косвенная утечка памяти?
сори за подчерк пишу с калькулятора
1. передавать в delete[]/free нужно только тот указатель, что вернул new[]/malloc соответственно (иначе будет UB); удалится весь массив
2.
>Займёт ли структура их места с учётом того что они в совершенно разных частях памяти и уж точно идут не по порядку.
структура из 4х интов --- это кусок памяти размером 16 (либо 32) байта, так что нет. да и вообще, нельзя ожидать что очередной запрос памяти в куче вернет освобожденный перед этим указатель
>Происходит ли фрагментация памяти и не накапливаются ли свободные кусочки памяти которые нельзя использовать поскольку туда ничего не влазит и получается косвенная утечка памяти?
да
>пишу с калькулятора
экзамен?
Но мне 13, Холмс, в вашем рассуждении, должно быть, затесалась ошибка...
Нет, лень пекарню включать.
По поводу последнего. На счет фрагментации памяти. С этим как-нибудь борются не считая использования язаков со сборшиком мусора?
Товарищ педераст, ваш выбор - раст.
Аллокаторами пытаются бороться.
[code lang="cpp"]
//header.h
class SS{
private: char a[CONSTANTA1][CONSTANTA2];
public: char[][] hh();
}
//header.cpp
char[][] SS::hh(){
return a;
}
/ОШИБКА в header.h :expected unqualified-id before ‘[’ token/
[/code]
[code lang="cpp"]
class SS {
private:
boost::multi_array<char, 2> a;
public:
SS() {
a(boost::extents[CONSTANT1][CONSTANT2])
}
boost::multi_array<char, 2> hh() {
return a;
}
};
[/code]
То есть возможность вернуть массив из функции не встроена в язык и в стандартной библиотеке отсутствует? Или с бустом легче?
Массивы – указатели, многомерные массивы – многомерные указатели. Буст – параша.
>no. an array is an array. A pointer to the start of the array is a pointer. It just happens that the compiler has some syntactic sugar that does the translation for you in some situations. array and &array are interchangeable in a lot of cases.
>возможность вернуть массив из функции не встроена в язык и в стандартной библиотеке отсутствует
Да. Можно вернуть только указатель, равно как и передать. int a[] в качестве параметра - синтаксический сахар, фактически это значит int *a.
Массивов в С как таковых нету, нет такой сущности в языке. То что обычно называется массивом это сахар над арифметикой указателей, выражение типа foo[bar] разворачивается перед компиляцией в *(foo + bar)
https://ideone.com/S2wEC5
Поэтому возвращать массивы нельзя - нельзя возратить то чего нет. Есть указатели - их можно возвращать. В С++ есть массивы в виде std::array и std::vector - их спокойно можно возвращать.
Вопрос: обязательно ли компилировать библиотеку, которую юзает плагин той же версией студии? Или можно более новой?
Лол. Пять минут в С++ и уже знаю про конструкторы и деструкторы. В том числе про конструктор копирования.
Пруф, еще и саганул.
Буст, qt, многие другие. Впрочем, есть и другая крайность — каббалистический ад хаскеля.
Наркоманы, это вы. Написали пару строк кода, заинклудили Boost, Qt и еще горы подобного. Вам-то удобно, хуякс-хуякс. А как пользователи это будут собирать вас уже не интересует. "УМВР".
Дело в том, что я не программист. И компилирую что-то раз в год. У меня никогда не бывает рабочего энваромента со всей этой тряхомудией. Каждый раз одно и тоже. Скачайте все самые новые версии библиотек (ой, у вас есть скомпилированная версия 5.8.12, но нужна только 5.8.14 -- собери из исходников, раб). Проебись пару дней с отлавливаем ошибок cmake, потом еще пару дней прогугли вы ошибки компиляции. В итоге: "ура, у вас готов плагинчик, которые умеет двигать x в y". Это, конечно, никак нельзя было сделать без boost и всего остального.
— какую библиотеку для работы с midi ты можешь посоветовать?
— имеет ли смысл изучать QML для этого или можно работать просто на Qt?
— насколько подобная прога может помочь в устройстве на работу?
Почему я качаю последнюю версию из репов и не ебу себе мозг? Или ты у нас мамкин гентушник?
Излил свой бугурт и съебываю отсюда
А ты считаешь, что мы тут ядерный реактор из говна и палок должны собирать? Тебе, блджад, всё кросспалтформенное, быстрое и попен-сорцное подавай.
>многомерные массивы – многомерные указатели
Да ты не ебнулся ли часом? Заебешься разыменовывать 10-мерный массив чтобы добраться до значения. Массив любой размерности это один указатель с арифметикой для размерностей. a[x][y] это ((a + Mx) + y) для любого статически определенного двумерного массива.
как объекту через метод получить доступ к данным другого объекта? не спал уже более 16 часов туплю ппц, выручай анон
yep :3
Напомни, какой блевотный гуй получается на жабе и какое уебищное апи для его создания?
В 9000 раз меньше, чем жрёт оперативки.
Вот тебе нативный. Как говорится почувствуйте разницу.
Божественно!
У большинства норм программ он не нативный. Взять хотя бы твой браузер, или среду разработки.
А вообще гуи не нужен, когда есть веб. Пишешь бекенд и пользуйся хоть с мобильника.
Гуляй, порватка
> Но это же фронтэнд пилить ещё надо.
Декларативная страница всяко лучше, чем простыня кода.
Предпочитаешь JavaFX или WPF? Qml, кстати, выглядит приятнее, чем вся эта XML-подобная дрисня.
Та же херня, только сбоку. Суть WPF в мощных автоматических дата-биндингах, а xml <-> json переводится нахаляву же но вообще, да xml выглядит сильно хуже
Статические переменные.
The quick answer is that the character '0' is represented in binary data by the ASCII number 48. That means, when you want the character '0', the file actually has these bits in it: 00110000. Similarly, the printable character '1' has a decimal value of 49, and is represented by the byte 00110001. ('A' is 65, and is represented as 01000001, while 'a' is 97, and is represented as 01100001.)
If you want the null terminator at the end of the string, '\0', that actually has a 0 decimal value, and so would be a byte of all zeroes: 00000000. This is truly a 0 value. To the compiler, there is no difference between
A linearithmic function is a function of the form n · log n (i.e., a product of a linear and a logarithmic term). An algorithm is said to run in linearithmic time if T(n) = O(n log n).[7] Thus, a linearithmic term grows faster than a linear term but slower than any polynomial in n with exponent strictly greater than 1.
Очевидно, йобаалгоритм с алгоритмической сложностью O(n · log n) Тащи фразу, переведём.
Что возвращает следующий код?
[code lang="cpp"]
char D::genD()
{
for (int y = 0; y<D_HEIGHT; y++){
for (int x = 0; x<D_WIDTH; x++){
d[y][x] = NOTHING;
}
}
return d;
}
[/code]
[code lang="cpp"]
virtual Component *clone (...) const;
//
auto components_clone = std::make_shared< Component > (component.second->clone (owners_clone));
[/code]
Почему код не работает (компилятор ругается на абстрактность Component)
Однако, если я меняю
[code lang="cpp"]
virtual std::shared_ptr< Component > clone (...) const;
[/code]
то все компилится без проблем.
Почему так?
юзаю спермокомпилер
тогда почему следующий код не работает?
[code lang="cpp"]
D cls;
char dd = cls.genD();
cout << dd[0][2];
//Ошибка
cout << dd[0];
//Никакой ошибки
[/code]
Хотя, уже все равно.
Поменял
[code lang="cpp"]
char d[HEIGHT][WIDTH];
[/code]
на
[code lang="cpp"]
char d = new char[HEIGHT];
for (int i = 0; i < HEIGHT; i++)
d = new char[WIDTH];
[/code]
и все заработало. Только вот теперь вопрос: двумерный массив и указатель на массив из указателей на массивы - это разные вещи ?
Тех массивов, которые ты притащил в С++ из паскаля, тут нету.
Есть указатели на 1 элемент или на несколько элементов, а как их интерпретировать - решать тебе
Не работает потому, что компилятор в душе не ебет что твой массив двумерный, когда ты выносишь указатель за пределы области, в которой он был определен. Используй контейнеры и не еби себе мозги. boost тебе дал multi_array для твоих нужд. Дабы ты понимал, в C++ возвращение голого указателя является моветоном.
че?
Почему дебил? Я действительно хз как это делать. Одногруппники тож дауны не шарят.
>>486731
>Массивов в С как таковых нету, нет такой сущности в языке
>∗(∗foo + bar) + baz)
вон из профессии нахуй, быстра блядь
откуда вообще блядь пошло что массивов не существует??? да, они decay до указателя, но это отдельная сущность
int x[a]; --- x[j] ==== ∗(x + b∗i + j)
сука блядь, развелось похапистов не отличающих массив от int∗∗
>int x[a]; --- x[j] ==== ∗(x + b∗i + j)
int x[size1][size2]; --- x[index1][index2] ==== ∗(x + size2∗index1 + index2)
макаба сосет хуи
>откуда вообще блядь пошло что массивов не существует??? да, они decay до указателя, но это отдельная сущность
Если массив это отдельная сущность, то как ты объяснишь строку 8 в https://ideone.com/S2wEC5 ?
> x + size2∗index1 + index2
Интересная точка зрения. А как эта формула работает если двумерный массив не прямоугольный, а с разными длинами строк?
>как ты объяснишь строку
сишным стандартом:
http://stackoverflow.com/questions/5073350/accessing-arrays-by-indexarray-in-c-and-c
>>488138
>а с разными длинами строк
а ну быстра сделал мне !двумерный массив! с разным длинами строк
не массив указателей на строки, а именно массив с разными длинами строки
и сразу покажи его sizeof (и ассемблерный код если ваще знаешь что это такое)
"Хотя вы можете легко писать код, используя нативные циклы, есть несколько причин, почему вы можете захотеть писать их таким способом. Первая — кодирование становится чуточку проще. Вторая — джуниоры(или даже сеньоры, которые, как вы думаете, никогда не должны быть повышены) с меньшей вероятностью сделают всё ту же старую ошибку, написав что-то вроде "for (i=0; i<=length;i++)", а потом ещё будут спрашивать вас, почему этот код иногда работает, а иногда падает внутри функций, из которых был вызван."
Объясните мне, чем плох такой цикл?
http://habrahabr.ru/post/173639/
мб int i=0 должно быть написано? мммм
на хабре написано хуйово либо вообще хуйня какая-то (ошибка "меньше-либо-равно" вместо "меньше" --- это слишком примитивно и тупо)
суть foreach --- это пройтись по всем элементам контейнера и выполнить операцию
разница с "for (size_t i=0; i<length; ++i)":
1. length может быть неконстантной операцией (например для связных списков)
2. "foreach (Object& obj, container)" сильно короче чем "for (size_t i = 0; i < container.length(); ++i) { Object& obj = container;"
короче говоря, это не for плох, это foreach лучше
алсо, для C++11 есть for (Object& obj : container) --- гуглить range-based-for
Array of arrays - это статический одномерный массив с синтаксической обёрткой в виде array[huy][pizda]. Все элементы расположены в статической памяти и последовательны, поэтому нужный вычисляется с помощью array[x][y] == ((array + huyx) + y). Между функциями можно кидать с помощью testFunction(&array[0][0], huy, pizda).
Array of pointers to arrays - это динамический массив вида *array в котором каждая строка - это отдельный массив, который располагается в разных частях кучи. В функции отсылается с помощью testFunction(array, huy, pizda). А там уже доступ к отдельному элементу просто по array[x][y].
разметка проебалась
>array[x][y] == ЗВЁЗДОЧКА((array + huy ЗВЁЗДОЧКА x) + y)
> динамический массив вида ДВЕ_ЗВЁЗДОЧКИarray
Лучше использовать контейнеры.
Слов тоже может быть несколько
MySphere CreateSphere(0,3,6,5) - парсится на MySphere, CreateSphere, и числа 0, 3, 6 ,5
Тебе нужен лексический анализатор (лексер). Есть готовые (Flex, lex). Если задача простая и ты уверен что она не будет потом расширятся то можно свой навелосипедить.
Разве лексер не лексемы анализирует? Ему yacc (bison) нужен чтобы на лексемы разбить сначала.
Лексер разбивает входной поток на токены. Смотря что именно ему нужно, если просто токенов не достаточно то может и yacc понадобится, но для yacc тот же лексер нужен сначала.
char * p= new char[256];
delete p;
struct Bloc
{
float a,b;
unsigned char c;
int d;
};
vector< Bloc> vec = new vector< Bloc>();
vector< Bloc> vec;
sizeof(char) выдаёт размер самого указателя, а sizeof(*char) размер первого элемента из массива соответственно.
Но как, блядь, мне получить ебаный размер ВСЕГО МАССИВА?
It's UB.
[code lang="cpp"]
std::vector<Block> vec; // Контейнер в стеке, элементы в куче
std::vector<Block>* vec = new std::vector<Block>; // Контейнер в куче, элементы в куче. Так пишут только долбоебы, btw
[/code]
Спс
p_create(string(s, k, s.size()));
Хочу сделать что-то типа такого, но не получается. Видел такую письку в чьем-то коде
спс
std::vector / std::array
говно-си
цепепе-господа используют std::string, если речь идет о строках
кстати говоря, давайте уж обсудим immutable строки. основное преимущество — возможность делать их shareable и быстрые substring операции
inb4: про проблемы COW написано тут: http://www.gotw.ca/publications/optimizations.htm
Что там обсуждать? Было бы годно. Было бы нехуёво в таком случае иметь две версии, как это сделано в Scala с некоторыми коллекциями.
Быстрый substring за счёт суффиксных массивов/автоматов?
>Быстрый substring за счёт суффиксных массивов/автоматов?
не, я имел ввиду не поиск, а генерацию поддиапазона:
http://pastebin.com/jFc7fHRC
за счет aliasing constructor ( http://en.cppreference.com/w/cpp/memory/shared_ptr/shared_ptr )
Погуглил за тебя, сученок, можешь не благодарить.
http://stackoverflow.com/questions/10394292/how-to-intercept-keystrokes-to-windows-command-prompt
Люблю тебя, ты делаешь мою жизнь веселее.
class Point {
double x = 0;
double y = 0;
public:
Point() { }
};
class Point {
double x;
double y;
public:
Point() : x(0), y(0)
{ }
};
class Point {
double x;
double y;
public:
Point() {
x = 0;
y = 0;
}
};
class Point {
double x = 0;
double y = 0;
public:
Point() { }
};
class Point {
double x;
double y;
public:
Point() : x(0), y(0)
{ }
};
class Point {
double x;
double y;
public:
Point() {
x = 0;
y = 0;
}
};
Первый не возможен, третий не инициализация, а присвоение. Так что второй — твой единственный выбор.
1. как определить что каталог является именно спец-каталогом?
2. можно ли получить к ним доступ?
У винды с этим есть проблемы с излишне сложными механизмами.
И за тебя погуглил тоже.
http://blog.aaronballman.com/2011/08/how-to-check-access-rights/
Ну и дабы получить доступ к тому, что только администратор может видеть тебе нужен элеватор.
http://www.codeproject.com/Articles/320748/Haephrati-Elevating-during-runtime
А чтобы получить доступ к System Volume Information тебе скорее всего понадобится запустить процесс от имени системы
http://stackoverflow.com/questions/19187548/how-do-i-write-a-windows-8-software-to-run-with-system-privileges
https://2ch.hk/pr/res/470285.html
На первый вопрос правильный ответ "один объект, называется cat", но оп-хуй вывел свою терминологию, по которой создаваемый таким образом объект не имеет названия, а названия есть только у статически создаваемых объектов. Вообще определенный смысл в таком подходе есть, но указатели на объекты часто упоминаются как "имена объектов", и давать такой вопрос на собеседовании хуево. Все упирается в терминологию, которая четко нигде не прописана, и никто за ней не следит.
в ios есть следующий код:
inline ios_base& __CLRCALL_OR_CDECL hex(ios_base& _Iosbase)
{\t// set basefield to hex
_Iosbase.setf(ios_base::hex, ios_base::basefield);
return (_Iosbase);
}
когда мы пишем hex(cout), то все понятно, но почему работает код cout<<hex, ведь у функции есть обязательный параметр?
потому что у стрима есть оператор<<, который эти функции принимает. А уже в ней стрим применяет эту функцию к себе.
А можно пример, как реализовать подобную функциональность для своего класса.
Добра тебе.
Извини, что я тебя достаю, но у меня еще вопрос: как перегрузить манипуляторы потока, принимающие значения, к примеру такие как setw?
cout<<setw(10)<<"Pomogi Anon!!!";
Открываешь исходники, например https://gcc.gnu.org/onlinedocs/libstdc++/libstdc++-html-USERS-4.2/iomanip-source.html смотришь что это вообще за параша, перезагружаешь с нужным типом
http://ideone.com/j1RWct
>новый стандарт
>C++11
охуел?
>shared_mutex не добавили
добавили: https://isocpp.org/blog/2013/04/n3659-shared-locking
>я должен теперь подключать ебаный буст
НУ ПИЗДЕЦ ОХУЕТЬ БЛЯДЬ ТРАГЕДИЯ!!!1111одинодин
>я должен теперь подключать ебаный буст
> НУ ПИЗДЕЦ ОХУЕТЬ БЛЯДЬ ТРАГЕДИЯ!!!
Двачую, это говно настолько прижилось, что легаси с boost::shared_ptr мы будем видеть ещё и через десять лет.
Блять, решил почитать, что там за объекты. Читал несколько минут, пытаясь понять, в чем подвох. Подвох в том, что ОП-хуй подумал, что придумал вопрос с подвохом. Гавно какое-то.
Просто ОП того треда – хуй, который валит все свои проблемы на джунов, которых сам и взял. Даже вопрос не может адекватно сформулировать, блять, а чего ждёт от молодёжи ещё.
Завтра запилю.
фл ин юн не рили?
Вы видите копию треда, сохраненную 24 июня 2015 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.