Вы видите копию треда, сохраненную 30 января 2017 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
От старости бегущих в никуда...
Вполне понятно: с пропозалами мы дружим,
А вот с фичами всегда у нас беда...
Мы нацепляем лямбды, ranged-for,
Асинков побольше норовим засунуть в код...
И все нам кажется, что мы достойны трелей,
И студента в программисте можем разбудить...
Ну, хорошо, коль студент тот рядом,
А если он давно уж не студент?...
Смешно смотреть, заманивая скоростями,
Как приходится идти на беспредел...
И всё равно, что студент - уже бывалый программист:
На свой язык он смотрит сквозь стакан,
Последнее, что может быть неясно:
Когда раскроется вот этот весь обман?...
Быть может утром, в солнечном восходе,
Написав подлиннее так шаблон,
Проводишь молодость свою ты на пороге,
Поймешь: он старости такой не ждал...
А может все закончится в тот вечер,
Когда твои UB он разглядит,
Не будет ночи написанья кода...
Но даже в старости, монады манят нас.
Прошлый тред: https://2ch.hk/pr/res/866503.html (М)
Q&A
Q: Где шапка?
A: У мочератора. В прошлом треде.
Q: Что делают хейтеры?
A: Сосут член вместе со своими мамашами.
Q: Что делают студенты с лабами?
A: То же, что и хейтеры
Чё ты хотешь от с++
Ну и про C++ — тоже лютая хуйня. Кто блядь возвращает ссылки на локальные переменные?
Ну не знаю я хачкеля иначе не перекатывал бы этот тред, чо ты прицепился-то?
Тот же код без orders на конце как минимум в окемле валиден, хз что тут
>чо ты прицепился-то?
(\x -> f x) это то же самое, что просто f. Это же очевидно. пиздец ты тупой.
Иди почитай стандарт. reference на локальную переменную после возврата из функции — dangling reference
Правда, согласен, что все фичи, которые плюсовцы у хачкиля слизывали имеют ну совершенно невменяемый синтаксис!
В Java 8 всё ещё хуже.
Профессионально кожу на С++. Синьер, СПб, 4 года опыта, проект 1 млн строк. Существует с 2005 года. Переписывался, но целиком никогда. С++ лютый калл, просто лютейший. Сервер компилит с -Wall -Werror. Это просто какой-то калл нереальный. Эти суки тупые всё никак не придумают модули. Ебаные модули из джавы. За 15 лет хуй, не сделали. Если выходит так, что один инклюдит другой и тот инклюдит первый, то это ад пиздец. Разгребать. На любой чих - typedef. Не там поставил, где-то нужно - ебись протаскивай. Либы под платформы и ендианы. иф эндиан - хуяк, елс фигак. Гавно ебаное кароч.
/0
Нет, но ты все же сходи почитай что такой этот магический &&. Никакой ссылки не возвращается.
>>881189
Братан, ну это уже материал для целого треда. Я просто сделал картинку для привличения внимания (и кстати нормально так бахнуло).
> Никакой ссылки не возвращается.
Да, потому что это говно даже не скомпилируется. http://ideone.com/gVSNI5
> магический &&
"Магический" он для новых ньюфагов вроде тебя.
Да, ты прав, это жутчайшая параша, на которой однако можно написать парашу побыстрее чем на няшной (ридонли правда как правило,ы).
Это продакшен код. Его проверяют PVS-студией и прочим. Проект знают только 2-3 лида. Остальные вообще не рубят. Когда кода очень много, а поддерживать скорость разработки и гибкость надо, то код превращяется в месиво из указателей (шаредпоинтеров) и интерфейсов. IObjectSetterListenerGetterOnly достаешь и пытаешься что-то делать. В IDE не проверить. Только в реалтайме.
>>881197
Да. Чей, вы знаете сами. В ДС2 вариков не много.
>Движок игровой, мб.
мб, но это показатель мегахуевой архитектуры. хотя индусам за количество строк и платят, кек.
Я бы с тобой сейчас очень поспорил. Чем выше гибкость - тем выше абстрактность. И самые гибкие вещи в итоге становятся просто дико абстрактными.
http://ideone.com/ZLIl7v
Спутал с && в аргументах, не суть. Придираться к коду написанному в пэинте наобум - это конечно сильно.
Я тебе ещё раз говорю: у тебя dangling reference.
prog.cc:6:2: warning: Address of stack memory associated with local variable 'i' returned to caller
return std::move(i);
^~~~~~~~~~~~~~~~~~~
Это win!
>матроид
паржал, даже слова такого не знаю. теперь объясни на пальцах, в каком софте эта хуйня востребована?
Я бы сказал так: умудрились написать программу в пару строчек, которая течёт. Хорошо демонстрирует суть языка.
мимиоп
Да нет, это только вашу ньюфажную суть демонстрирует.
Зачем понимать что-то если у тебя уже есть контракт на миллионы долларов на десятки лет.
>>881224
Я тоже ржу каждый день. С тех кто вообще вкладывает деньги в С++ и меня. Но пока вкладывают.
>>881211
Не знаю ничего про них. Движок могут вообще в США писать. Там у них 10 человек. А В рашке арт и скрипты.
> которая течёт
Кстати, она не течёт. Ты опять облажался. Она приводит к UB, если кто-то воспользуется этой висячей ссылкой.
Для составления алгоритмов, наверное.
1. Let P := x1 and i := 2.
2. If i > n go to Step 7.
3. Let P = y1y2 . . . yi−1 be the current path.
4. If xi→y1 then P := xiP. Let i := i + 1 and go to Step 2.
5. If yi−1→xi then P := Pxi. Let i := i + 1 and go to Step 2.
6. For j = 1 to i − 2 do: If yj→xi→yj+1 then P := P[y1, yj]xiP[yj+1, yi−1].
Let i := i + 1 and go to Step 2.
7. Return the path P.
Самое главное — что ты смог так точно проанализировать код написанный с максимально утрированной вырвиглазистстью в пэинте. Браво!
Да насрать на пэинт. Я не обращаю внимания на то, что ты локальную переменную назвал неправильно в return-е или что std::move "забыл". Я про суть.
> Для составления алгоритмов
ага, наверное обход контура ну или нахождения кратчайшего пути? правда? так вот, вся эта матанохуйня там нинужна
Мне, кстати, поведение gcc нравится. UB так UB! Вернём нулевой указатель!
>Сперасофт
Слава Богу, ушел!!! Так как зарплату постоянно задерживали. Но, об этом можно догадаться и по предыдущим отзывам работников данной компании. Руководители заинтересованы в своем заработке, а не в вашем процветании. Будут мотать нервы, давать нелогичные задания, лишь бы меньше платить. Никто не станет на вашу сторону, и тем более не войдет в сложившуюся ситуацию.
Обещали спорт, как элемент социального пакета. Забудьте, такого вам не видать. Могут вас подставить и без единого сожаления и колебания, уволить. Менеджеры прикрывают косяки друг друга. Их главная задача, не качественно выполнять работу, а прогибаться под начальство. И, конечно же, подлизаться к клиентам компании, дабы те не пошли жаловаться. Одним словом, работников не считают за людей, так дополнительная рабская сила. Которую в любой момент могут заменить, более удобным вариантом…для них конечно.
спермасофт, кек
products должна быть функцией, и должна вызываться ко всем элементам списка рекурсивно и возвращать лист, насколько я понял из того кода, так что нет.
Руст:
fn products(self) -> LinkedList<Products> {
orders.iter().flat_map(|o| o.products()).collect()
}
Девочка, вроде.
как написать функцию, которая заполняет поля структуры через scanf и как лучше эту функцию принимать, через указатель?
http://pastebin.com/3ndaKRfH
в VS выделяет book в сканфах и пишет expression must have a class type
>C++
>заполняет поля структуры через scanf
Я новенький, но мне здесь уже нравится!
>это лютейшее зло
Только для макак.
>избегай его
Вон результат этого >>881201
Хотя какие-то даунята всё еще считают, что абстракции это только прокси-фабрики бобов.
Писал раньше на C++ в КБ студентом, но в основном это были древние стандарты да и глупый я был.
Сам таким был. Липмана читай, не делай заданий, потом просмотри Майерса (эфективные кресты и эфективный стл). Далее что-то о проэктировании, я нихуя не читал кроме дядюшки Боба, потому я и вечный джун (хотя и мидлом числюсь).
Вас всех надо расстрелять просто, всем лучше от этого будет.
Вам самим тоже.
Sasi
>Вон результат этого
Наоборот, это результат того, что они пытаются лепить "движок" с абстракциями. Чем больше абстракций, тем больше лапши и говна в итоге, потому что все абстракции протекают.
С точки зрения умственно неполноценного быдла - несомненно.
>Чем больше абстракций, тем больше лапши и говна в итоге, потому что все абстракции протекают.
Ты блин альтернативу предложи, как лучше писать что-то сложнее laba1
>как лучше писать
отсекая все лишнее, аки окама. тот анон прав, абстракция тянет слишком много ненужного кода.
Всё лишнее это что? Вот у тебя есть что-то что должно поддерживать кучу форматов, устройств, протоколов и прочее. У тебя будет 100500 интерфейсов по 1000 строк лишь бы это всё заработало. А еще межбиблиотечное взаимодействие и прочее.
риалстори, сейчас пишу байндинг к одному движку, реализаций таких движков несколько, у каждой своя архитектура и свои ньюансы, писать абстракцию просто невыгодно, заточенный и протестированый код с одного движка за неделю переносится на другой. нет абстракций, код прост, мал и понятен.
>Ты блин альтернативу предложи
Рефакторинг и переписывание. Изначально делать код, который легко изменять и переписывать большими кусками. Лепить костыли поверх абстракций, которые устарели - это самый плохой вариант.
>абстракций, которые устарели
Делать устаревающие абстракции - это надо быть реально умственно неполноценным.
Люди, вы омерзительны.
>Делать устаревающие абстракции
Ну не все же ясновидящие Ванги, чтобы все точно наперед придумать.
>зачем кого то расстреливать
И то правда, вы даже пули не заслуживаете.
Утопить в выгребной яме.
ну дя, абстракции нужно всеравно допиливать. кстати это же типа абстрактный класс и наследование (я выкатился из крестов, кек) и проблемы теже...
Вовсе нет, бывают и совсем не глупые люди.
Хотя абсолютное большинство - как ты или даже хуже, это да.
в россии лучше видеть все пятьюдесятьми оттенками серого
чтобы было как руSSкое небо 9ть месяцев в году
Можно вообще всю бд в одну таблицу запихать, в одну колонку и блобом. Только нахуя?
> реляционная
> без связей
Ты можешь не делать явных внешних ключей, но тогда будь уверен, что не выстрелишь себе в ногу. А связи по данным хотя бы ради дедупликации нужны.
У нас например вначале было много внешних ключей, но когда архитектура устоялась и код работы с бд перестал трогаться, то ради производительности их отключили.
Каждый елемент масива - слово.
Каким алгоритмом вывести в файл все возможные комбинакции слов таким образом, что слова из N строчки масива могут идти, только после слов N-1 строчки. То есть
1-2-3
4-5
0
6-7
Дает комбинации:
1406
1407
1506
1507
2406 и тд.
Без деревьев никак?
#include <chrono>
#include <asio.hpp>
void print(const asio::error_code& /*e*/)
{ std::cout << "Hello, world!" << std::endl; }
int main()
{
using namespace std::chrono_literals;
asio::io_service io;
asio::steady_timer t1(io, 2s);
t1.async_wait(&print);
asio::steady_timer t2(io, 3s);
t2.async_wait(&print);
io.run();
}
#include <typeinfo>
struct ass {
virtual ~ass() { printf("%s with %p\n", __PRETTY_FUNCTION__, this); }
virtual void f() { printf("%s with %p\n", __PRETTY_FUNCTION__, this); }
};
int main()
{
ass ass;
void** pvtbl = reinterpret_cast<void***>(&ass)[0];
printf("%p\n", &typeid(ass));
printf("%p\n", pvtbl[-1]);
}
В чём профит обходить контейнер используя r-value?
Я имею ввиду вот такое: for( auto &&e : entities )
У меня с move-семантикой пока не лады. Всё никак не могу врубиться у неё. Особенно с perfect-forwarding и прочим таким.
const free_throws & clone (free_throws & ft.)
{
free_throws pt;
pt = ft; // копирование информации
return pt; // возврат ссылки на копию
}
Первый оператор создает безымянную структуру f ree_throws. Указатель pt
указывает на эту структуру, таким образом, pt — это сама структура. Создается
впечатление, что приведенный выше код возвращает структуру, однако объявление функции
отражает, что она возвращает ссылку на эту структуру.
Схуяли так можно делать? Ведь мы объявили, что функция возвращает ССЫЛКУ НА СТРУКТУРУ. Но при этом возвращает просто СТРУКТУРУ...
>>881767
Он тут херни понаписал.
Во-первых. В объявлении pt не хватает "= new free_throws". Далее по тексту у него написано: "free_throws & jolly = clone(three);", хотя должно быть: "free_throws const & jolly = clone(three);", т.к функция возвращает ссылку на константу. А в следующем абзаце, он перепутал clone() с call().
Во-вторых. pt - это указатель. Разыменование (pt) указателя дает нам ссылку на структуру, а не саму структуру, как он написал. Соответственно, с возвратом из функции всё хорошо.
>Разыменование (pt) указателя дает нам ссылку на структуру, а не саму структуру
Вот тут не понял. Схуяли?
Такие правила. http://ideone.com/MXVby0
Иначе ты бы не смог изменять херь, на которую указатель ссылается, т.к всегда бы получал копию.
Погугли, на SO несколько раз обсасывалось.
>Такие правила.
А где можно узнать эти "правила"? Хотелось бы увидеть этот пункт, где будет написано: "... когда объявляет ссылку на структуру, а возвращаем структуру, то будет возвращаться ссылка, а не объект". А то блядь получается, что читаешь книгу, в ней пишут что нужно возвращать то, что объявлено в прототипе функции. А применяем уличную магию. Почему? Потому что можем себе позволить. Попахивает каким то очень сильным колдунством,а не программированием.
В этих файлах хранятся всякие текстуры, картинки, модели и прочее говно. В файлах есть заголовок со всякой инфой, в том числе названия файлов, их оффсеты, размеры и прочее.
Так вот, под название там выделено ровно 512 байт, но строки там хранятся как-то ебануто. Не обычная сишная строка с нулём на конце, нет, там нуль после КАЖДОГО БЛЯДСКОГО СИМВОЛА НАХУЙ!
Ну вот допустим строка "300" там не "33 30 30 00", а "33 00 30 00 30 00", ну и нулями заполнено в конце свободное место.
Собственно вопрос, как эту парашу привести в читаемый вид?
> А где можно узнать эти "правила"?
В стандарте можно: http://eel.is/c++draft/expr.unary.op#1 Но тебе туда рано, наверно.
> нужно возвращать то, что объявлено в прототипе функции
Ну всё так и есть. У тебя же не возникает вопросов с (int a; int &r = a;). Инициализировали ссылку не ссылкой. Тоже самое с возвратом по ссылке из функции, с тем исключением, что возвращаемый объект должен жить дольше чем тело функции. В нашем случаее мы объект создали на куче, соответственно он живет пока мы выделенную под него память не освободим.
> нуль после КАЖДОГО БЛЯДСКОГО СИМВОЛА НАХУЙ!
>Ну вот допустим строка "300" там не "33 30 30 00", а "33 00 30 00 30 00"
Это называется UTF-16 (лень думать это BE или LE)
> Собственно вопрос, как эту парашу привести в читаемый вид?
Ищи про конвертацию utf16->utf8
В стандартной либе есть какие-то codecvt_blah_blah, но их использование геморройно.
>>881936
Для хранения utf16 вместо std::vector<unsigned short> (как на сайте), думаю, можно брать std::u16string
Еще один вопрос, анон. Посмотри на пик, почему <int>, если там job?
Еще такой вопрос, в чем отличие явной специализации от экземпляра шаблона?
P.S.: Блядь, ну просто полный пиздос. Я сижу, обложившись бумажными версиями 4го издания (Platinum Edition) и 6го издания. Плюс в электронном виде 5ое издание. А также 4ое, 5ое, 6ое издания в оригинале. Опечаток просто тьма нахуй.
Специализация, это ты можешь взять шаблон и написать разную реализацию для разных типов.
Создание экземляра, это ты просишь компилятор сгенерировать код для конкретного типа.
[CODE]
// основной шаблон
template <typename H>
struct P
{
H d;
};
template <>
struct P<int> // специализация P для int
{
int d;
int e;
};
template struct P<double>; // явно попросили создать экземпляр P для double
/ компилятор сгенерирует код по основному шаблону, заменив H на double.
template <>
struct P<double>
{
double d;
};
/
int main()
{
P<int> a; // В a есть d и e, т.к для P<int> есть своя реализация.
P<char> b; // В b есть только d. P<char> сгенерирован неявно по основному шаблону.
}
[/CODE]
Специализация, это ты можешь взять шаблон и написать разную реализацию для разных типов.
Создание экземляра, это ты просишь компилятор сгенерировать код для конкретного типа.
[CODE]
// основной шаблон
template <typename H>
struct P
{
H d;
};
template <>
struct P<int> // специализация P для int
{
int d;
int e;
};
template struct P<double>; // явно попросили создать экземпляр P для double
/ компилятор сгенерирует код по основному шаблону, заменив H на double.
template <>
struct P<double>
{
double d;
};
/
int main()
{
P<int> a; // В a есть d и e, т.к для P<int> есть своя реализация.
P<char> b; // В b есть только d. P<char> сгенерирован неявно по основному шаблону.
}
[/CODE]
А еще, был бы благодарен, если бы мне подсказали еще, как там изменить цвета фона и остального текста
А еще я долбоеб, забывший про знаки вопроса. Третье предложение текста -- это таки вопрос. Заранее спасибо
И фон -- таки белый. Что-то я жестко туплю, надо спать идти
бывший-оп-революционер
Пикрелейтед - функция для перемещения матрицы 2х2 в зависимости от кнопки на 90 градусов. И теперь для каждой кнопки нужно прописать следующие значения переменных:
кнопка 1: row=0, column=0;
кнопка 2: row=1, column=0;
кнопка 3: row=2, column=0;
кнопка 4: row=0, column=1;
кнопка 5: row=1, column=1;
кнопка 6: row=2, column=1;
кнопка 7: row=0, column=2;
кнопка 8: row=1, column=2;
кнопка 9: row=2, column=2;
Вопрос: как это делается, как не прописывать вызов функции для каждой кнопки, а засунуть все это в цикл или что-то подобное?
>Бьерн Страуструп - Программирование. Принципы и практика использования C++
>Стэнли Липпман, Жози Лажойе - Язык программирования C++
>Стивен Прата - Язык программирования C++
Котаны, посоветуйте с чего лучше начать?
С программированием и базовыми конструкциями (if, for, while) знаком. Delphi
Да, если все равно что кодить, и область деятельности в целом безразлична - то кресты один из самых поганых вариантов для работы программистом.
>Стивен Прата - Язык программирования C++
this
P.S.: Правда стоит заметить, что очень много опечаток и перевод чем дальше (в смысле номера издания), тем хуже.
>>882158
>Пикрелейтед - функция для перемещения матрицы 2х2 в зависимости от кнопки на 90 градусов.
уже.
Это называется поворот, а не перемещение.
>Правда стоит заметить, что очень много опечаток и перевод чем дальше (в смысле номера издания), тем хуже.
Это вот пиздец конечно. Не первый раз с таким сталкиваюсь в технической литературе. За что только деньги переводчикам платят?..
одним словом, вкратце, кратко, в двух [нескольких] словах
> уже.
Что уже-то? Что дальше? Теперь у каждой кнопки что ли прописывать?
void __fastcall TForm1::Button1Click(TObject Sender)
{
row = 0; column = 0;
Func();
}
void __fastcall TForm1::Button2Click(TObject Sender)
{
row = 1; column = 0;
Func();
}
.
.
.
void __fastcall TForm1::Button9Click(TObject *Sender)
{
row = 2; column = 2;
Func();
Как-то же это сокращается?
Задача: http://codeforces.com/contest/733/problem/F
Мой код: http://codeforces.com/contest/733/submission/22498991
Задача про теорию графов.
Прога стопится на одном из дальних тестов по причине превышения лимита времени, хотя остальные тесты проходит с близкой к идеальной скоростью.
Все алгоритмы применяемые в коде имеют в наихудшем варианте асимптотику O(logN).
Можно заметить что все тесты до 42 имели количество нод 650 (за исключением самых первых), в то время как в 42 тесте их стало 10к. Судя по всему проблему надо искать в этом направлении.
забыл добавить, в qt 5
> RAD (от англ. rapid application development — быстрая разработка приложений) — концепция создания средств разработки программных продуктов, уделяющая особое внимание быстроте и удобству программирования, созданию технологического процесса, позволяющего программисту максимально быстро создавать компьютерные программы.
>Как-то же это сокращается?
Что, RAD Studio (или её огрызок) не очень способствует быстрой разработке приложений?
> C++ Builder (по-русски обычно произносят [си-плюс-плюс билдэр], [си билдэр]) — программный продукт, инструмент быстрой разработки приложений (RAD)
> инструмент быстрой разработки приложений
> Как-то же это сокращается?
> инструмент быстрой разработки приложений
void formMas(int x, int u, int nX, int nU) {
for (int i = 0; i < nX; i++) {
u = (int)realloc(u, (nU + 1) sizeof(int));
if (u == NULL) { cout << "ошибка"; return; };
u[nU] = x;
++nU;
};
}
Что не так в процедуре ? Из мейна ее вызываю,
formMas(x, u, n, &l);
x - указатель на заполненный массив длинной n
u - указатель на массив, который надо заполнить. Пока что u=NULL на момент передачи
l - длина u,равна 0.
Быстрофикс
void formMas(int x, int u, int nX, int nU) {
for (int i = 0; i < nX; i++) {
u = (int )realloc(u, ( nU + 1) sizeof(int));
if (u == NULL) { cout << "ошибка"; return; };
u[ nU] = x;
++ nU;
};
}
...
while(a!=0){
t = a
a = b
b = a - b;
}
...
Ошибки пиши в cerr
После for точка с запятой не нужна
Не вставляй код на двач
u[nU] = x; что ты хотел сделать этой командой? скопировать массив?
Нашел источник проблемы. Одна из переменных задавалась как:
a = (int) f / k
но результат почему то не int
короче решил сам, но запрос такой: что можно прикрутить к vim, чтобы он помогал отлавливать такие хитрые ошибки?
Для него даже автокомплита человеческого не запилили, а ты блять требуешь анализ кода на лету, лол.
Поставь IDE + плагин vim-mode (в цлионе и культе точно есть такие).
Какой ты беспомощный. Даже тему в своей псевдо-IDE настроить не можешь.
Естественно, лол. Иначе будет data race, что есть UB
В ньюфаг-тред.
бляяяя )
Картинку забыл.
Хотя, может я поторопился тебе советовать.
Я настолько тупой, что даже пикчи не загрузил.
Нормальные фото сделай, это нечитаемое говно, понятны только по 2 вопроса в центре.
Товарищ семинарист тебя проверит.
Скучные вопросы. Хоть бы изюминка была какая-то.
Например, в десятом убрать public: в Derived
А, не. Там есть изюминка. Затупил.
Как ты уверенно судишь об undefined behavior. Вдруг вызовет )))
Шестой тоже странный вопрос. Мне кажется, или он предполагает какое-то значение sizeof(int), но про это явно не написано?
Что нельзя? У меня получилось.
Именно так. Какой ответ там, няша?
А. Ты поправил там. С указателем должно быть не UB.
Только зачем ты после всех закрывающих скобок лепишь точку с запятой? Формально, конечно, ошибки нет. Но.
Водные данные: пытаюсь запустить код на видеокарте (amd 8800m, дрова обновил), свойства, запихиваемые в означенную выше функцию - cl_queue_properties props[] = {
CL_QUEUE_PROPERTIES, CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE | CL_QUEUE_ON_DEVICE , 0
}, винда 64 восьмёрка, дллку, положенную в папку с проектом, брал из sdk/bin/x86_64, кожу в студии 15.
В этом вопросе я еще довольно ньюфажен. Думаешь, поставить более раннюю версию? И почему говнецо?
> amd 8800m
> Поставил свеженький OpenCL 3.0
ЛОЛ. Ты правда думаешь, что OpenCL можно взять и "поставить" какой хочешь? Твоя карта только OpenCL 1.2 поддерживает.
(Я даже не знаю, что 2.0 поддерживает)
Ближе к ночи я начинаю нести хуйню. Не OpenCL, конечно, а amd app sdk. У самого OpenCL вообще последняя версия 2.2
Бля, а ведь clCreateCommandQueueWithProperties только с OpenCL 2.0. А какого то хуя на старую clCreateCommandQueue студия ругается deprecated. Перекатываться на старую версию сдк?
Передо мной поставили в вузе задачу написать класс, объект которого представляет из себя динамический массив, который сортируется одним из своих методов, а также возможностью быстрого поиска.
Если нормально переписать тз, то получается:
Необходимо реализовать динамический массив чисел с возмножстью поиска и сортировки. Идея реализации: выделяется небольшой (1) массив, по мере его заполнения выделяются такие же, которые связываются в список.(2) Также должны быть следующие методы(их больше, но эти мне непонятны.)
Создать массив заданной начальной длины.(В смысле такой длины должны быть мои массивы в (1)?)
Удаление элемента по индексу.(Все остальные элементы надо видимо сдвинуть?)
Ну и самое непонятное это (2).
Что здесь вообще от меня хотят? О каких списках речь и через что их реализовывать?
Я вот описал такой список через структуру следующим образом
-------------
struct Num_Massive_//один из мини-массивов
{
Num_Massive_ prest;//ссылка на предыдущий такой массив
Num_Massive_ after=Null;//ссылка на следующий
double Numb[10];//сами значения
}
-------------
Понимаю, что с некоторыми вопросами могут быть проблемы, но все же надеюсь на помощь.
Синтезатор.
Начал читать Прата. И на первом же хеллоуворлде студия плюется ошибкой. Пикрелейтед.
Кто сталкивался, как пофиксить?
Чето не робит.
bool value;
for (i = 0; i < 4; i++) for (j = 0; j < 4; j++) {
if (arr[j] < arr[i + 1][j])
value = true; }
if (value == true) выйти из программы;
>>881172 (OP)
>Q: Что делают хейтеры?
>A: Сосут член вместе со своими мамашами.
>
>Q: Что делают студенты с лабами?
>A: То же, что и хейтеры
Когда есть чего — тоже можно ставить.
Ты сходен со студентом с лабой до степени смешения.
Сколько времени нужно дрочить кресты, чтобы получить работу?
Исходные данные: линуксовый админ, скрипты на питоне/баше, С уровня универовских лаб, БД на уровне 10 запросов, а что внутре - хз.
Для наса надо уметь всё.
Зачем вообще нужна толпа программистов на готовый проект? Написал миллион строк и проект готов. Пользуйся. Зачем ещё платить программистам чтобы они его переделывали?
[code]int main(int argc, char argv[])
{
FILE f = fopen(argv[1], "rb");
}[/code]
[code]int main(int argc, TCHAR argv[])
{
FILE f = _wfopen(argv[1], L"rb");
}[/code]
Первый вариант работает, а второй возвращает нуль и errno 2 (нет такого файла). Но файл-то есть...
Что за хуйня?
Бля, я даун, надо было _tmain, а не main...
> этот спермо-C++...
Ящитаю, нужно запретить отписываться в этом треде про спермоC++. С managed C++ сюда ведь никто не лезет?
bool f(int k) {
bool flag; int j;
flag = true;
for(j = 2; j<= k/2; j++)
if(k % j == 0) {
flag = false;
break;
}
return flag;
}
int main()
{
int n = 999999, i;
for(i = 2; i<=n; i++)
if(f(i))cout << i << endl;
return 0;}
bool flag; int j;
flag = true;
for(j = 2; j<= k/2; j++)
if(k % j == 0) {
flag = false;
break;
}
return flag;
}
int main()
{
int n = 999999, i;
for(i = 2; i<=n; i++)
if(f(i))cout << i << endl;
return 0;}
> char letter;
и я хочу вводить его через консоль.
Но стандартное
> cin >> letter;
заставляет программу падать. Как это можно победить? Вводить string и конвертировать?
Макаба съедает звездочки, совсем забыл. Вот скрин. Алсо, cin.get тоже не помогает.
(Автор этого поста был предупрежден.)
Битками.
20 BTC
>Прата
>Пришло время рассмотреть последний целочисленный Тип: char.
Ну пиздец.
Нежели никто не знает? Это же вообще основы, я просто понять не могу где косяк.
Что по твоему такок char* и что написано в документации про cin.get. Почему ты думаешь это должно работать? следующий раз сам себе эти вопросы задай
Наверн.
> Что по твоему такок char*
Это переменная для одного символа. И она не работает без указателя. Что ты хотел услышать?
> что написано в документации про cin.get
То, что это альтернатива cin <<, которая является методом вывода данных в консоль.
И это не приблизило меня к пониманию проблемы.
Никогда не задавался таким вопросом честно говоря. На сколько я помню, он всегда используется с указателем. По крайней мере, у меня ничего без указателя не работало впоследствии.
>я просто понять не могу где косяк.
У тебя в ДНК.
>Всё очень просто: у меня есть некий char letter; и я хочу вводить его через консоль.
char letter;
cin>>letter;
или
cin.get(ch);
или
ch=cin.get();
Get не умеет си строку возвращать.
Я и так знаю, что такое укзатели, спасибо. Это переменные, указывающие ( и использующие) память другой переменной.
>>884512
> У тебя в ДНК.
Ну так этого у каждого. За столько миллионов лет, на земле не осталось ни одного не мутироваашего вида.
А вообще, присвоить одну переменную другой я и сам догадался. Разве нет менее костыльно способа?
>>884513
Есть, да. Я например в инстиуте учусь, только я не виноват что нам нихуя не объясняют а заставляют пилить ебанутые программы на языке, который я никогда не учил. Нет, чтобы всё как у людей - есть array, есть mutable array. Нет блять, хочу какие-то векторы изобретать. Вектор - это же направленный луч! С какого хуя он стал массивом? Я за сегодняшний день столько новго узнал, что ахуеть.
> Вектор - это же направленный луч! С какого хуя он стал массивом?
Страуструп пояснял. Типа у него есть длина и отсчёт с нуля, а array занят сишным массивом.
>Это переменные, указывающие ( и использующие) память другой переменной.
NYET.
Это целочисленные переменные, содержащие адрес чего-либо. Или есть ещё адрес + ограничение длины
>char звёздочка letter
Тут ты объявляешь УКАЗАТЕЛЬ на ОБЛАСТЬ памяти.
И на что он у тебя указывает? На хуй знает что, т.к. ты его ничем не инициализировал.
Когда std::cin пытается что-то записать в хуй знает какую область памяти, то всё идёт по пизде.
Указатель ОБЯЗАН указывать куда-то, если ты хочешь работать с данными по его адресу.
В твоём случае достаточно просто создать переменную на стеке. Т.е. написать char letter. И уже с ней работать.
http://cpp.sh/2rbp
> Что за иде?
Xcode же. Я на нем в ObjC пишу, но он поддерживает и C++. Шрифт - San Francisco
Спасибо
Судя по ошибке на твоём скриншоте у тебя там std::map, у которого ключ какой-то int, а значение std::string.
ВСЮ строку(std::string) сравнить с одним символом(char) нельзя.
Давай сюда код. Через ideone или pastebin. И так, чтобы он скомпилился.
{
// предположим, было выведено 4
std::cout << sizeof(int) << std::endl;
int *x = new int;
// предположим, было выведено 0x60000000
std::cout << x << std::endl;
// что выведется тут???
std::cout << x + 3 << std::endl;
}
А я уж понадеялся...
Арифметика указателей. Тут всё законно.
http://pastebin.com/dk28Qfx3
Вот, только он падает по той же ошибке, как я и описал, из-за char. Все остальное работает как должно.
Если ты хочешь узнать есть ли подобный символ в строке, то нужно использовать ПОИСК в строке, а не сравнение с символом.
В твоём случае:
if (useletters.find(letter) != std::string::npos){
std::cout<<"Letter exist"<<std::endl;
}
Мне нужно не только знать, есть ли он в строке, но еще и знает его номер. Но вообще да, вектор здесь не нужен, это можно сделать и со string через find, мне уже сказали.
>vector<string> usedLetters(27, '0');
Тут тебе строка(std::string) не нужна, если ты работаешь с массивом(std::vector) символов.
Меняй на vector<char> usedLetters(27, '0');
>auto it = std::find(vWord.begin(), vWord.end(), *letter);
Тут уже не нужно разыменовывать указатель, т.к. уже он не используется.
Меняй на std::find(vWord.begin(), vWord.end(), letter);
>auto it = std::find(vWord.begin(), vWord.end(), letter);
Тут тебе нужно использовать std::find из algorithm (http://en.cppreference.com/w/cpp/algorithm).
Добавь #include <algorithm>
Версия, которая компилится без ошибок. Логику работы я не проверял.
http://ideone.com/fGvE8N
> ideone
Пруф уровня /pr/..
Я тоже так могу. Вот, смотри http://ideone.com/ax7CeC пруф того, что локальные переменные инициализируются нулём
Тогда буду рад цитатке из стандарта крестов, т.к. и правда не понимаю с чего будет выведен не адрес, а не кусок памяти по адресу + 3*sizeof(int).
>не понимаю с чего будет выведен не адрес, а не кусок памяти по адресу
Я тоже не понимаю. Я нигде этого не утверждал.
А ты пруфани что не инициализируются нулём.
Большое спасибо, всё работает. Я, правда, так и не понял, почему у меня это не заводилось когда я сам убирал везде указатели.
http://caxapa.ru/thumbs/468328/misra-c-2004.pdf
7.1
И стандарт:
http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1124.pdf
6.5.6
В итоге это UB, если мы пытаемся выполнить операцию, которая за границами массива.
Верно?
Сам обосрался, сам починился. Классика.
> find(vWord.begin(), vWord.end(), letter);
находит только первое значение. То есть если в слове 2 одинаковые буквы, find показывает номер только первой. Это можно как-нибудь обойти? На ум приходит только отрезать начало до номера первой буквы и проверить снова, так до конца.
find возвращает итератор, указующий на найденную букву. Начинай поиск не с vWord.begin(), а с этого итератора.
Т.к. у тебя был
>vector<string> usedLetters(27, '0'); //USED LETTERS
А в строке
>if(usedLetters == letter){ ...
Сравнение std::string с char. Т.е. одной строки с одним символом. Это совсем разные типы.
Чтобы сравнить первый символ строки с твоим символом, то получить его можно с помощью оператора []
Если расписать строчку со сравнением, то всё встанет на свои места.
std::string str = usedLetters;
char compare_letter = str[0]; //0 - индекс символа в строке, с которым ты хочешь сравнить.
if (compare_letter == letter){ ...
Если не расписывать, то итоговая версия выглядела бы так:
>if(usedLetters[0] == letter){ ...
Или не напиздел. Я подумал, что find это string::find
Если это std::find, то надо как я написал сначала.
auto it = begin(vWord);
while ((it = find(it, end(vWord), char) != end(vWodr))
{
blah-blah-blah
}
>while ((it = find(it, end(vWord), char) != end(vWodr))
while ((it = find(it, end(vWord), char)) != end(vWodr))
скобку забыл
self-fix
скайп you.arehome
Половину квадратных скобок спиздила вакаба. Что поделаешь. Надеюсь суть донёс.
>>884580
Тут всё просто. Надо начинать поиск с прошлой позиции + 1.
http://ideone.com/a68DxG
> Надеюсь суть донёс.
Донёс, и очень даже понятно.
> Надо начинать поиск с прошлой позиции + 1.
Я так и понял, да.
>>884597
Всё, понял. Спасибо.
>Надо начинать поиск с прошлой позиции + 1.
Да, точно. Тогда find(it+1, end(vWord), c) и т.д.
Естественно, подразумевается, что никаких using namespace std или using std::begin нет, иначе это тривиальный вопрос.
Зачем бампать, если указал скайп?
Окей, проще - компиль будет искать вызываемую функцию в неймспейсе аргумента. Такой принцип и есть Koenig Lookup
>Argument-dependent name lookup
> This behavior is also known as Koenig lookup, as it is often attributed to Andrew Koenig, though he is not its inventor.[2]
Оживляю С++ тред спамом.
Конкретно в части - Name Lookup, Namespaces, and the Interface Principle
Описано как вообще работают неймспейсы в крестах.
https://www.vanko.me/sites/vitki.net/files/attachments/sutter-exceptional-cpp--47-puzzles_0.pdf
Не, я конкретно про то, что не стоит полагаться на ADL для всяких find accumulate for_each
Лол. Я давно читал, так и скажу.
Но, уверен, что там было написано что нехуй так делать.
Т.к. в итоге можно огрести проблем.
Типа http://ideone.com/1WHOic
Не, у меня другие соображения.
Типа вот, http://ideone.com/FVbihT
Замени vector на array, например.
Кстати, я понял, что std::begin до begin тоже лучше не сокращать, иначе на простых статических массивах выйдет облом.
Хотя, может с std::begin стоит поступать, как с std::swap? Писать using std::begin; и применять его без std::
Да, так и есть
Согласен.
Радует, что это достаточно искусственные примеры.
Пока в пром. коде нигде подобного не видел.
Таки везде либо указан неймспейс, либо using.
Кстати, до сих пор не понимаю, почему у gnuтых итератор в std::vector-е это не просто поинтер, как для std::array
Думаю, что из-за того, что std::vector<bool> должен быть ОСОБЕННЫМ. Он bool хранит не как последовательный массив значений.
http://ideone.com/jvIzJG
Так это. Тип итератора в не-bool вектор и так отличается от типа итератора в bool-вектор.
Есть идея что это наследие C++98/03, там, вроде, не было требования хранить данные в векторе непрерывно и не было std::vector::data(), а в C++11 появилось требование. ABI ломать не стали.
>Вектор - это же направленный луч!
Не луч, а направленный отрезок.
Ведь существует модуль вектора
>>Я например в инстиуте учусь, только я не виноват что нам нихуя не объясняют а заставляют пилить ебанутые программы на языке, который я никогда не учил. Нет, чтобы всё как у людей - есть array, есть mutable array. Нет блять, хочу какие-то векторы изобретать. Вектор - это же направленный луч!
В каком ты институте-то учишься?
> Не луч, а направленный отрезок.
Да, точно.
> В каком ты институте-то учишься?
http://feri.um.si/
Нет, на математике как таковой щас проходим (и проходили с октября) интегралы и всё, что с ними связано, а на погромировании были темы уровня "как поставить ide", потом совсем основы, ну и сегодня вот указатели.
Бамп.
Как она применяется на практике? Не Совсем понимаю выгоды сокрытия переменных и функций если доступ к ним осуществляется через всякие интерфейсы.
Ты не испортишь переменную из вне если у тебя нет интерфейса для её редактирования. И это неотъемлемая часть ооп. Как ты создашь класс без инкапсуляции?
Точно так же. Только не буду к переменным напрямую обращаться.
Да и вообще часто во всяких игровых движках в классе вектора обращение делают к координатам напрямую.
Как это напрямую? Класс же состоит из этих объектов. Ты просто не сможешь создать класс и не включить в него ни один объект. сможешь, но он будет бесполезен
>Не луч, а направленный отрезок.
>Ведь существует модуль вектора
Вообще-то вектор - это элемент линейного (векторного) пространства, который можно представить в виде направленного отрезка.
>>885179
>Аноны для чего нужна инкапсуляция?
>Не Совсем понимаю выгоды сокрытия переменных и функций
Так в этом же и вся фишка. Чтобы спрятать как можно больше данных от прямого воздействия на них. Оставив лишь возможность взаимодействия только лишь через интерфейс.
Плюсы и минусы инкапсуляции?
Плюсы:
1) Полный контроль над входящими и исходящими данными
2) Можно, без боязни сломать все остальное приложение, править реализацию методов компонентов. Так как во всем остальном приложение фигурирует только интерфейс. А вы меняете только реализацию логики.
Минусы:
1) Если вы нашли ошибку в библиотеке которую используете. То вам будет трудно ее исправить.
2) Снижается скорость работы приложение. Ну этот пункт думаю вообще учитывать нет смысла с учетом мощностей которые теперь доступны. И плюсов которые она предоставляет.
По умолчанию public
Помогите кто-нибудь. Нигде же нет примера такого.
Чего?
У меня в классе 3 переменные х, игрик, зет. Они публичные, делай с ними что хочешь. Это не класс по-твоему?
> Вот этого и не понимаю. Испорчу через интерфейс
> Спорно это всё как-то. Делаю только лабы и не могу понять её плюсов.
Плюсы только если твой код будут другие люди юзать, так удобнее просто обычно - они же вообще не знают что ты там напилил и с инкапсуляцией на ошибки с меньшей вероятностью наткнуться. А так вообще похуй.
И вот если на вход прилетает что-нибудь, например с размером 343, т.е. в конце остаётся меньше 4, i улетает в минус но из цикла не выходит.
Когда работает много людей, пользователи твоего класса должны знать, что если они будут использовать все как надо, то ничего не сломается. А ты, в свою очередь, должен знать, что если ты не будешь трогать интерфейс, то тоже никому ничего не сломаешь. Для этого и нужна инкапсуляция - это защита данных, которые автор класса может менять.
Ну вот я тоже об этом думал, но удмал вдруг всё сложнее
>>885215
Динамическое создание объектов
Мне кажется облегчает разработку
Спасибо конечно, но по сути мне нужно самому реализовать вектор. Сортировку реализовать не проблема, плюс по заданию это не кусорт. Шаблоны мне пока не нужны.
Бамп. Как изолировать пространства имён членов класса? Подсказали вместо неймспейса использовать полностью публичный класс состоящий только их статических функций, но это костыльно выглядит
>Аноны для чего нужна инкапсуляция?
Чтоб класс было невозможно использовать в многопоточной среде, т.к. неизвестно, какие сайд-эффекты у вызова метода.
> Не Совсем понимаю выгоды сокрытия переменных и функций если доступ к ним осуществляется через всякие интерфейсы.
Сокрытие переменных нужно тогда, когда есть инварианты класса, которые должны сохраняться.
Но всякие дебилы учат, что нельзя иметь класс Point с открытыми полями x, y, z, а нужно присобачить к ним геттеры и сеттеры. Вот это уже не ООП, а ООП головного мозга.
Благо, в C++ последнее не очень распространено, тогда как в среде Java-макак...
Вот как здесь надо только с неймспейсами. Добавил чисто виртуальный деструктор чтобы объект этого класса создать нельзя было.
http://ideone.com/PkoAwG
На 77 странице начинается глава "Мир в ореховой скорлупке", эпиграфом к которой Хокинг выбрал слова Гамлета из Акта 2, Сцены 2.
"Гамлет: О боже, я бы мог замкнуться в ореховой скорлупе и считать себя царем
бесконечного пространства, если бы мне не снились дурные сны".
В начале главы Хокинг рассуждает о том, что мог иметь в виду Гамлет, упомянув ореховую скорлупу.
это модный англопидерский эпиграф
Лол, ты о чём? Ты уверен что ты сам понимаешь что это и зачем надо?
Какая разница govno.x или govno.x(); ???
Какая разница govno.setX(123) или govno.x = 123 ???
Как это в чём смысл? Чтобы получать или изменять значение, нет? А ещё предположим в этом классе есть всякие методы типа нормалайз и + и ещё дохуя чего.
Получается у нас есть охуенный класс вектор, который при этом не инкапсулирует внутренее представление своих данных. Ну и что теперь?
А вот если бы был какой-нибудь
class Yoba {
public;
rofl * kakoetoGovno;
...
}
и при этом kakoetoGovno по должно изменяться только внутри класса для каких-то своих хитрых и коварных планов, тот тут инкапсуляция пригодится.
А то ты напишешь либу(или просто с кем-то что-то будешь пилить), а васян напрямую обратится к kakoetoGovno и изменит значение там, в результате все остальные методы этого класса которые работали с kakoetoGovno будут работать не так как рассчитано. А потом он тебе напишет что плохо зделали тупо, надо ещё разбираться(=тратить время) как автор че там сдеалал, что ему пришлось полчаса искать ошибку, а не просто без задней мысли использовать. По идее как-то так.
>Динамическое создание объектов
>Мне кажется облегчает разработку
Ты понимаешь что ты пишешь? Я не могу динамически создавать объекты класса с открытыми полями?
Ну я жаву только с libgdx юзал.
Там всё как надо
http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/math/Vector3.html
факт в том, что ребята выше жиденько обосрались
Бамп
Очень хочу найти анона, который будет мне годным наставником по С/С++ и, возможно, Qt в дальнейшем. Чтобы раз в N дней связываться с ним и задавать глупые вопросы, которые трудновато сформулировать для Stackoverflow и гугла. Или когда не хочется палить код. Пока, думаю, нужно это будет нечасто, да и скорость ответов не важна. Ну и вообще, годного анона хорошо бы. Чтобы советовал умные вещи и объяснял, где я на этот раз накосячил. В любом удобном формате - почта, скайп, телега, вк. Если не здесь, то где поискать таких?
#include <QtGui/QApplication>
#include <QtSql>
#include <QTableView>
int main(int argc, char argv[])
{
QApplication app(argc, argv);
// обьявляем базу
QSqlDatabase dbase;
// коннектимся
dbase = QSqlDatabase::addDatabase("QSQLITE");
dbase.setDatabaseName("baza.db");
// гуй для отображения
QTableView view;
// модель для вью
QSqlTableModel model;
// каким ХУЕМ модель знает из какой базы брать таблицу 666 и селектить?
model.setTable("table666");
model.select();
view.setModel(&model);
view.show();
return app.exec();
}
данный код работает, что и бесит. Ну ок. С запросами подобная срань:
QSqlDatabase dbase;
dbase = QSqlDatabase::addDatabase("QSQLITE");
dbase.setDatabaseName("baza.db");
QSqlQuery a_query;
QString str_insert = "INSERT INTO table666(number, address) VALUES (%1, '%2');";
QString str = str_insert.arg("14").arg("hello world str.");
bool b = a_query.exec(str);
Чо за нах? То есть я могу написать чудо-класс-сумматор типа:
int a = 1;
int b = 2;
int c = 3;
Sumoist fuckit;
int sum = fuckit.sumAll();
// и будет sum == 6
Как такая белиберда возможна? Я конечно допускаю, что переменная обьявленная ниже может неким магично-научным способом знать о переменной, обьявленной выше. Но как заставить чтобы QSqlQuery, обьявленный в методе класса, "увидел" базу QSqlDatabase, обьявленную как поле класса, инициализированную и подключенную в конструкторе класса.
Вот почему не сделать как в нормальном языке, как например, в петоне:
import sqlite3
con = sqlite3.connect('users.db')
cur = con.cursor()
cur.execute('CREATE TABLE users (id INTEGER PRIMARY KEY, firstName VARCHAR(100), secondName VARCHAR(30))')
con.commit()
cur.execute('INSERT INTO users (id, firstName, secondName) VALUES(NULL, "Guido", "van Rossum")')
con.commit()
print cur.lastrowid
cur.execute('SELECT FROM users')
print cur.fetchall()
con.close()
#include <QtGui/QApplication>
#include <QtSql>
#include <QTableView>
int main(int argc, char argv[])
{
QApplication app(argc, argv);
// обьявляем базу
QSqlDatabase dbase;
// коннектимся
dbase = QSqlDatabase::addDatabase("QSQLITE");
dbase.setDatabaseName("baza.db");
// гуй для отображения
QTableView view;
// модель для вью
QSqlTableModel model;
// каким ХУЕМ модель знает из какой базы брать таблицу 666 и селектить?
model.setTable("table666");
model.select();
view.setModel(&model);
view.show();
return app.exec();
}
данный код работает, что и бесит. Ну ок. С запросами подобная срань:
QSqlDatabase dbase;
dbase = QSqlDatabase::addDatabase("QSQLITE");
dbase.setDatabaseName("baza.db");
QSqlQuery a_query;
QString str_insert = "INSERT INTO table666(number, address) VALUES (%1, '%2');";
QString str = str_insert.arg("14").arg("hello world str.");
bool b = a_query.exec(str);
Чо за нах? То есть я могу написать чудо-класс-сумматор типа:
int a = 1;
int b = 2;
int c = 3;
Sumoist fuckit;
int sum = fuckit.sumAll();
// и будет sum == 6
Как такая белиберда возможна? Я конечно допускаю, что переменная обьявленная ниже может неким магично-научным способом знать о переменной, обьявленной выше. Но как заставить чтобы QSqlQuery, обьявленный в методе класса, "увидел" базу QSqlDatabase, обьявленную как поле класса, инициализированную и подключенную в конструкторе класса.
Вот почему не сделать как в нормальном языке, как например, в петоне:
import sqlite3
con = sqlite3.connect('users.db')
cur = con.cursor()
cur.execute('CREATE TABLE users (id INTEGER PRIMARY KEY, firstName VARCHAR(100), secondName VARCHAR(30))')
con.commit()
cur.execute('INSERT INTO users (id, firstName, secondName) VALUES(NULL, "Guido", "van Rossum")')
con.commit()
print cur.lastrowid
cur.execute('SELECT FROM users')
print cur.fetchall()
con.close()
пиздануццо, а в конструкторе:
QSqlTableModel(QObject *parent = 0, QSqlDatabase db = QSqlDatabase());
// нихуя не пашет:
this->dbModel = new QSqlTableModel(0, this->db);
Read The Fucking RTFM уже!
> If db is not specified, or is invalid, the application's default database is used.
Откуда оно берёт application's database, если не из глобальной переменной где-то в кишках Qt?
>это каким уем она глобальна?
http://doc.qt.io/qt-4.8/qsqldatabase.html#addDatabase
http://doc.qt.io/qt-5/qsqldatabase.html#addDatabase
> QSqlDatabase QSqlDatabase::addDatabase(const QString &type, const QString &connectionName = QLatin1String( defaultConnection ))
> If connectionName is not specified, the new connection becomes the default connection for the application, and subsequent calls to database() without the connection name argument will return the default connection.
Я знаю что параша, но в определенных областях все прочее - еще хуже.
Что компилятору не нравится? Типа некорректно.
std::vector<char> myVector;
тоже не ок.
#include <vector> сделал.
А тут что не так? Ошибок не вызывает, но работать тоже не хочет - хуй вместо содержимого переменной.
void encrypt(string s1, string s2, string &res)
{
for (int i = 0; i < s1.length(); i++) {
res = (s1.c_str()) ^ (s2.c_str());
}
}
Жизнь у тебя проебалась, долбоеб.
Че за res =, баран.
Там как минимум += - хотя тоже кривое говно, конечно.
В смысле "нафиг"? Потому что не хочет оперировать символами в стиле С++ ксор, а обычными оперирует.
>Делай reserve() для res.
Зачем, он же автоматически расширяется.
Эх, сейчас бы писать кроссплатформенный, быстрый и красивый софт на чем-то кроме крестопараши, писать ААА-игрушки на чем-то кроме крестопараши, писать дрова, системные утилиты и сами операционные системы, программировать микруху на чем-то кроме крестопараши.
Везде, где я видел, строки ебанутые, кроме как в Rust. Они единственные, кого я знаю, понимают, что у строки не должно быть доступа по индексу.
>>885430
>кроссплатформенный, быстрый и красивый софт на чем-то кроме крестопараши
Софта на крестопараше, где сочетались бы все 3 качества, почти не существует.
> писать ААА-игрушки на чем-то кроме крестопараши
C#
>сами операционные системы, программировать микруху на чем-то кроме крестопараши.
Это и так на 99% не на крестопараше делается.
>кроссплатформенный
Сынок, это фантастика. Тебе в джавапидорам.
Хотя стоп, даже там не все гладко, хехе.
>быстрый и красивый
Тебя за такие кукареки лид голову клавиатурой проломит и выбросит на мороз.
>почти не существует.
>почти
Такой большой - а в сказки веришь.
Хотя если ты учитываешь твою лаба1.срр - то да.
>Делай reserve() для res.
Нихуя не поменялось.
>>885434
Браузеры те же, чем тебе не софт? KDE то же, в прошлом вроде скайп и софт адобы.
>>885434
>C#
Юнити - не ааа. И игр таковых (йобы) на нем нет. А в CryEngine/UE вроде как С++
Вообще, у вас тут какое-то буйство сегодня, зайду попозже.
>у строки не должно быть доступа по индексу.
Это называется не осилили UTF8/16
Хотя да, задачка интересная - не для дебилов.
Наоборот, любой, кто осилил utf8, понимает, что обращение по индексу это долбоебизм.
>что обращение по индексу это
Сложная задача, ибо подразумевает частичную быструю распаковку.
Быдлу не положено, так-то.
Есть, скажем, char массив из 11 элементов:
unsigned char data[11] = {75, 101, 110, 110, 101, 100, 121, 22, 11, 7, 171};
И структура
struct MyStruct {
char n[7];
char d;
char m;
unsigned short y;
};
Собственно, можно ли её инициализировать в, эм, одну команду? Ну, то есть, как-то так магически struct MyStruct s(data), чтобы компьютер просто взял и распихал данные из массива по нужным ячейкам нужного размера?
Если так нельзя, то хоть можно как-то указать длину массива, а не писать целиком каждый отдельный элемент, вроде
struct MyStruct s = { {data[0], data[1], ...., data[6]}, data[7], data[8], (unsigned short )&data[9]};
?
Мне как-то это виделось очевидным применением структур для приведения каких-то сериализованных данных в нормальным вид, а тут оказывается, не только не знаю, как это сделать, но и можно ли вообще, так как не гуглится нифига.
>unsigned char data[11] = {75, 101, 110, 110, 101, 100, 121, 22, 11, 7, 171};
unsigned char data[11] = {75, 101, 110, 110, 101, 100, 121, 22, 11, 171, 7};
то есть.
Ты имеешь в виду только для массива memcpy делать? Потому что memcpy(•s, dat, 11); ведь не сработает, адреса элементов не подряд идут.
>адреса элементов не подряд идут
Ну так и (unsigned short )&data[9] может обломиться на endianness.
Весь вопрос получения структуры из массива упирается в то, как этот массив был получен из структуры (и был ли)
>Собственно, можно ли её инициализировать в, эм, одну команду?
Если обмазаться шаблонной магией как тут https://www.youtube.com/watch?v=abdeAew3gmQ , то может и можно.
>на endianness.
Нет такого вообще, потому что нет ничего кроме интела.
Смирись, дегенерат СПОшный.
Я проверил. между char m и unsigned short y (в моём случае, по крайней мере) стабильно один байт пропускается, из-за чего всё сбивается.
>>885458
>Ну так и (unsigned short )&data[9] может обломиться на endianness.
Предположим, тут всё работает и они чудесным образом совпадают.
>как этот массив был получен из структуры (и был ли)
Неизвестно, байты по сети получены. Это просто заголовок файла определённого формата, где представлена изначальная информация.
>стабильно один байт пропускается
То есть ты даже посчитать байты не способен, и четное от нечетного не отличаешь.
Тебе в пхп-загон.
Чё ты нервный такой? Я не понимаю, ты что, не согласен с тем, что memcpy(•s, data, data_len) не всегда работает, потому что адрес элемента может не быть адрес_предыдущего + размер_предыдущего, как в массивах?
Короче, то, чего я хочу, стандартными сишными средствами сделать нельзя, нужно руками всё выставлять, я правильно понимаю?
Блядь, ну так объясните как или ссылку на мануал/туториал/лекцию/главув книге дайте, я ж поэтому и пришёл, что не знаю.
Хотя спасибо-таки стоит сказать, пара фраз натолкнула на некоторые мысли и другие поисковые запросы.
Qt 5.5.1 если что
http://keinkeinkein.livejournal.com/139068.html?thread=3068476#t3068476
Для начала тебе нужно не распыляться, а выбрать одно из нескольких десятков направлений. Мир не ограничивается системным программированием, тебе не обязательно шагать по моим стопам. Направлений/стеков куча, выбирай сам. Выбери что-то одно, что-то узкое и выучи полностью теорию. Везде можно найти свое место, главное - не бояться, не тупить. Ближе к концу 13-го года я случайно увидел одну вакансию в разделе "Careers" одной компании из США, написал на почту, рассказал о себе. Было 3 интервью с интервалом в неделю. Первое - час просто пообщались по Hangouts на свободные темы. Второе - техническое, прощупывали почву, заодно спрашивали всякую хрень типа всех деталей работы OOM killer и шареной памяти. Третье - уже по файловым системам и ядерным потрохам. Подписал контракт, год отработал на фулл-тайме. Было тяжело, я уставал и примерно весной стал активно принимать таблетки xanax и prozac из аптек. Но это уже оффтопик. За весь 14-й год я поставил цель не потратить ни копейки (жил на сбережения), а весь доход за год складывать в условную копилку. В сумме вышло чуть более семидесяти килобаксов. Проект - не могу много рассказывать, но в общем это была распределенная децентрализованная отказоустойчивая проприетарная ФС под Linux, ядерный модуль и юзерспейсный софт. Я за год еще одну квартиру в городе купил в очень хорошем якобы престижном кирпичном VIP-доме (на последнем этаже, я только на последних покупаю в последнее десятилетие), но в убогом районе (напоминаю, в Воронеже всего 6 районов, и все 6 - белые гетто). Квартал - 4 дома - был вполне приличным, но дальше советские 9-этажки за ним стояли, гетто с люмпенами. Была мысль переехать жить в этот дом, но потом один раз поздно в пол 12-го ночи меня избили там во дворах, не понравилось местной шпане как я в упор на двуногую 30-летнюю агрессивную пьяную свинью-переростка в спортивном костюме посмотрел глаза-в-глаза, у них это атакой/наездом считается. Не ограбили, просто запинали толпой. Потом заявление писал. Короче, вполне реально тебе примерно тем же самым заниматься и перестать зависеть от государства. Но сразу скажу, ты бы даже первое интервью не прошел, тебя бы зачморили из-за английского. Нужно его хорошо знать, так, чтобы менеджер не напрягал свой слух и не замедлял свою речь, подстраиваясь под русского Ваньку. При этом нужно помнить:
- На серьезных проектах будешь единственным в команде, кто владеет русским языком. Никто не будет помогать, разжевывать, делать за тебя. Придется читать тонны манов и PDF'ок. Придется постоянно общаться голосом и текстом с теми, кто принципиально не будет переходить на симпл-инглиш из-за тебя.
- Многие задачи будут одновременно сложными, скучными и унылыми.
- Нельзя распиливать бюджет и тупить, если долго дебажишь race hazard - ставь в известность менеджера. Нужно работать с максимальной отдачей, эффективностью.
- Нужен самоконтроль, будешь сам управлять своим временем.
Я искренне хочу тебе помочь, но не знаю даже, как тебе вкатиться на рынок. Сразу скажу, избегай всяких бирж, галер и всех сервисов, где тебя покупают за X, а продают за 2X. Работай всегда напрямую на конкретного американца-менеджера конкретного проекта конкретной компании, который тебе платит, считает твою эффективность и метрики. Это самый выгодный вариант. Во всех остальных вариантах (русский тимлид, русский менеджер, аутсорсинговая фирма-прокладка) ты никогда столько в год не заработаешь, это абсолютно тупиковые пути для русского программиста. А как тебе вкатиться - сложно сказать, но попробуй, выучив теорию, найти какой-нибудь open source-проект, связанный с конкретной компанией. Не зацикливайся на системном программировании, у тебя может быть свой путь. Найди любой открытый проект, такой, чтобы какую-то библиотеку/ядро/модуль разрабатывала и курировала американская IT-компания, чтобы проприетарный проект базировался на открытом ядре. Скачай себе этот проект (git clone), изучи его, посмотри фич-реквесты, баги, исправь штук 5 и запили пару фич, а потом пиши на мыло американскому менеджеру проекта, что ты сделал то-то и то-то и хочешь контрактором поработать с испытательным сроком. Тебя возьмут. Готовься к тому, что в первый год твой годовой доход будет низким, но он будет в разы (!) больше годового дохода учителя физики из сельской школы (или кто ты там, забыл).
Конец цитаты
http://keinkeinkein.livejournal.com/139068.html?thread=3068476#t3068476
Для начала тебе нужно не распыляться, а выбрать одно из нескольких десятков направлений. Мир не ограничивается системным программированием, тебе не обязательно шагать по моим стопам. Направлений/стеков куча, выбирай сам. Выбери что-то одно, что-то узкое и выучи полностью теорию. Везде можно найти свое место, главное - не бояться, не тупить. Ближе к концу 13-го года я случайно увидел одну вакансию в разделе "Careers" одной компании из США, написал на почту, рассказал о себе. Было 3 интервью с интервалом в неделю. Первое - час просто пообщались по Hangouts на свободные темы. Второе - техническое, прощупывали почву, заодно спрашивали всякую хрень типа всех деталей работы OOM killer и шареной памяти. Третье - уже по файловым системам и ядерным потрохам. Подписал контракт, год отработал на фулл-тайме. Было тяжело, я уставал и примерно весной стал активно принимать таблетки xanax и prozac из аптек. Но это уже оффтопик. За весь 14-й год я поставил цель не потратить ни копейки (жил на сбережения), а весь доход за год складывать в условную копилку. В сумме вышло чуть более семидесяти килобаксов. Проект - не могу много рассказывать, но в общем это была распределенная децентрализованная отказоустойчивая проприетарная ФС под Linux, ядерный модуль и юзерспейсный софт. Я за год еще одну квартиру в городе купил в очень хорошем якобы престижном кирпичном VIP-доме (на последнем этаже, я только на последних покупаю в последнее десятилетие), но в убогом районе (напоминаю, в Воронеже всего 6 районов, и все 6 - белые гетто). Квартал - 4 дома - был вполне приличным, но дальше советские 9-этажки за ним стояли, гетто с люмпенами. Была мысль переехать жить в этот дом, но потом один раз поздно в пол 12-го ночи меня избили там во дворах, не понравилось местной шпане как я в упор на двуногую 30-летнюю агрессивную пьяную свинью-переростка в спортивном костюме посмотрел глаза-в-глаза, у них это атакой/наездом считается. Не ограбили, просто запинали толпой. Потом заявление писал. Короче, вполне реально тебе примерно тем же самым заниматься и перестать зависеть от государства. Но сразу скажу, ты бы даже первое интервью не прошел, тебя бы зачморили из-за английского. Нужно его хорошо знать, так, чтобы менеджер не напрягал свой слух и не замедлял свою речь, подстраиваясь под русского Ваньку. При этом нужно помнить:
- На серьезных проектах будешь единственным в команде, кто владеет русским языком. Никто не будет помогать, разжевывать, делать за тебя. Придется читать тонны манов и PDF'ок. Придется постоянно общаться голосом и текстом с теми, кто принципиально не будет переходить на симпл-инглиш из-за тебя.
- Многие задачи будут одновременно сложными, скучными и унылыми.
- Нельзя распиливать бюджет и тупить, если долго дебажишь race hazard - ставь в известность менеджера. Нужно работать с максимальной отдачей, эффективностью.
- Нужен самоконтроль, будешь сам управлять своим временем.
Я искренне хочу тебе помочь, но не знаю даже, как тебе вкатиться на рынок. Сразу скажу, избегай всяких бирж, галер и всех сервисов, где тебя покупают за X, а продают за 2X. Работай всегда напрямую на конкретного американца-менеджера конкретного проекта конкретной компании, который тебе платит, считает твою эффективность и метрики. Это самый выгодный вариант. Во всех остальных вариантах (русский тимлид, русский менеджер, аутсорсинговая фирма-прокладка) ты никогда столько в год не заработаешь, это абсолютно тупиковые пути для русского программиста. А как тебе вкатиться - сложно сказать, но попробуй, выучив теорию, найти какой-нибудь open source-проект, связанный с конкретной компанией. Не зацикливайся на системном программировании, у тебя может быть свой путь. Найди любой открытый проект, такой, чтобы какую-то библиотеку/ядро/модуль разрабатывала и курировала американская IT-компания, чтобы проприетарный проект базировался на открытом ядре. Скачай себе этот проект (git clone), изучи его, посмотри фич-реквесты, баги, исправь штук 5 и запили пару фич, а потом пиши на мыло американскому менеджеру проекта, что ты сделал то-то и то-то и хочешь контрактором поработать с испытательным сроком. Тебя возьмут. Готовься к тому, что в первый год твой годовой доход будет низким, но он будет в разы (!) больше годового дохода учителя физики из сельской школы (или кто ты там, забыл).
Конец цитаты
Господа, смотрите какая хуйня мне нужна:
Есть обьект, у него внутри уникальный айди и данные.
Для обьектов нужен пул, в котором элементы расположены последовательно, как в векторе. Элементы вместо удаления помечаются как неактивные.
В пуле нужен итератор по активным элементам.
И вместе с этим нужна возможность по айди получить стабильный указатель на элемент, который не проебётся, например, при ресайзе пула.
Это вообще физически реализуемо?
Аноны, зачем нужен спп если есть петон?
>рим ворлд
И правда годнота, но дауны и дальше будут отрицать очевидное превосходство C# над CPP
Что компилятору не нравится? Типа некорректно.
std::vector<char> myVector;
тоже не ок.
#include <vector> сделал.
А тут что не так? Ошибок не вызывает, но работать тоже не хочет - хуй вместо содержимого переменной.
http://ideone.com/LWAFQt
Ну по такой логике вм шершавого — кривое говно, ибо написана внезапно на... плюсах.
А эта ВМ сильно снижает производительность?
> В начале главы Хокинг рассуждает о том, что мог иметь в виду Гамлет, упомянув ореховую скорлупу.
А книга вся про такую концепцию или нет?
Или может Хокинг так обыграл выражение in a nutshell и in nutshell?
> Его ещё хранить надо не забыть.
Тебе замыкания ("лямбды") для чего завезли?
Можешь хоть одной строчкой (длинной) создавать замыкание, создавая и сохраняя генератор+распределение в capture list.
И каждый раз вызывая лямбду создавать новый генератор? И заново смотреть время?
auto gen_index = [prng=std::mt19937(std::random_device{}()),distr=std::uniform_int_distribution<size_t>{0, N-1}]() mutable { return distr(prng); };
Мэнсфилд П. Быстрая магнитно-резонансная томография file:///home/wolfram/downloads/nob0510c.pdf
Не знаю как реагировать.
Я а так уже засрал свой класс. Ещё 2 объекта сделают его ещё уродливее. Проще юзать сишный рандом. Вот зачем все внутренности нужно было нарушу вынимать?
Я хочу одну функцию которая не занимает память пока её не вызвать. Сама идей хранить генератор не годится.
> Проще юзать сишный рандом.
Ни для чего серьёзного он не подходит.
> Вот зачем все внутренности нужно было нарушу вынимать?
Чтоб контролировать соотношение качество/производительность. И были какие-то гарантии реального рандома (random_device)
Нет, ну можешь хранить только распределение, а генератор, получать параметром.
textBox5->Text = Convert::ToString(0,123456)
Как мне сделать чтобы пола 4 знака после запятой?
было*
inline std::string to_precise_string(double num, unsigned precision)
{
std::stringstream stream;
stream << std::fixed << std::setprecision(precision) << num;
return stream.str();
}
Да, ессно.
https://2ch.hk/pr/res/886043.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/886043.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/886043.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/886043.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/886043.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/886043.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/886043.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/886043.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/886043.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/886043.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/886043.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/886043.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/886043.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/886043.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/886043.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/886043.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/886043.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/886043.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/886043.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/886043.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/886043.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/886043.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/886043.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/886043.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/886043.html (М)
https://2ch.hk/pr/res/886043.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/886043.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/886043.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/886043.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/886043.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/886043.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/886043.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/886043.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/886043.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/886043.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/886043.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/886043.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/886043.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/886043.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/886043.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/886043.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/886043.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/886043.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/886043.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/886043.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/886043.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/886043.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/886043.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/886043.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/886043.html (М)
https://2ch.hk/pr/res/886043.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/886043.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/886043.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/886043.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/886043.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/886043.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/886043.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/886043.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/886043.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/886043.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/886043.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/886043.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/886043.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/886043.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/886043.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/886043.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/886043.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/886043.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/886043.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/886043.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/886043.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/886043.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/886043.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/886043.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/886043.html (М)
https://2ch.hk/pr/res/886043.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/886043.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/886043.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/886043.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/886043.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/886043.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/886043.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/886043.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/886043.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/886043.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/886043.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/886043.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/886043.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/886043.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/886043.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/886043.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/886043.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/886043.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/886043.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/886043.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/886043.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/886043.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/886043.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/886043.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/886043.html (М)
upd
Примерно понял, что нужно реализовывать через создание структуры массив из 10 элементов, ссылка на следующий экземпляр.
Но как упростить работу с индексом элемента? Можно ли создавать методы для структуры?
> Можно ли создавать методы для структуры?
Можно. Структуры это классы в C++, просто с public доступом к членам по-умолчанию.
Не пизди. Залазишь на хедхунтер, вбиваешь вакансию быдлокодера С++, и изучаешь стек технологий, в основном это stl/boost/QT, ну и знание основных алгоритмов
Проще всего сделать свой виджет из кнопки и label.
Потом используй QListWidget::setItemWidget
Если нужна привязка к данным, или динамический контент, то только черещ ListView и ItemDelegate.
Успокойся, довн.
Нелегетимный бамп.
И на собеседованиях тебе отвечают: мы перезвоним.
Там 1,5 команды, из которых 1,4 — это вообще баш. Доки же.
https://2ch.hk/pr/res/904165.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/904165.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/904165.html (М)
Вы видите копию треда, сохраненную 30 января 2017 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.