Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.80/15: Рейтинг темы: голосов - 15, средняя оценка - 4.80
1 / 1 / 1
Регистрация: 30.03.2016
Сообщений: 29

Шаблоны в с++

26.03.2017, 22:15. Показов 3296. Ответов 28
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Зачем при использовании шаблонов пишут, к примеру:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
template < typename T >
T Sum(T a, T b) {
    return a + b;
}
 
int main(int argc, char *argv[])
{
    setlocale(0, "");
 
    cout << Sum<int>(2, 2) << endl;
 
    system("pause");
    return 0;
}
какой смысл в "< >". Ведь можно писать и без них?

C++
1
2
3
4
5
6
7
8
9
int main(int argc, char *argv[])
{
    setlocale(0, "");
 
    cout << Sum(2, 2) << endl;
 
    system("pause");
    return 0;
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
26.03.2017, 22:15
Ответы с готовыми решениями:

Хранить шаблоны документов в базе и выводить данные в эти шаблоны
Доброго времени суток. Интересует вопрос: мне необходимо формировать вордовские документы по шаблону. У меня создан шаблон документа...

Чем отличаются шаблоны HTML и шаблоны WordPress
В чём различие между шаблонами HTML и WordPress. Кроме того, что создаются они разными способами. Конкретно имею в виду, почему их...

«Шаблоны шаблонов» vs «шаблоны с параметрами-шаблонами».
«Шаблоны шаблонов» vs «шаблоны с параметрами-шаблонами». Есть ли разница в этих понятиях? Если есть, то в чём? И где (в каких...

28
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
26.03.2017, 22:23
Цитата Сообщение от Алексаша Посмотреть сообщение
какой смысл в "< >". Ведь можно писать и без них?
можно делать вот такие глупости:
C++
1
cout << Sum<float>(2, 2) << endl;
0
331 / 283 / 78
Регистрация: 02.08.2016
Сообщений: 1,008
26.03.2017, 23:10
Вот так попробуйте:
C++
1
Sum(2, 2.0)
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
26.03.2017, 23:31
Цитата Сообщение от DevAlone Посмотреть сообщение
Вот так попробуйте: Sum(2, 2.0)
попробовал.
полет нормальный:

http://rextester.com/TWEFAS16724

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
 
//-std=c++14 -fopenmp -O2 -g3 -pedantic -Wall -Weffc++ -Wextra 
//-Woverloaded-virtual -Wctor-dtor-privacy -Wnon-virtual-dtor 
//-Wold-style-cast -Wconversion -Wsign-conversion -Winit-self 
//-Wunreachable-code
 
 
template<class T1, class T2>
auto Sum(T1&& a, T2&& b)
{
    using re = typename std::common_type<T1,T2>::type;
    return static_cast<re>(a) + static_cast<re>(b);
}
 
int main()
{
    
    std::cout << "result = " << Sum(2, 2.0) << std::endl;
    
}
0
331 / 283 / 78
Регистрация: 02.08.2016
Сообщений: 1,008
26.03.2017, 23:38
Цитата Сообщение от hoggy Посмотреть сообщение
попробовал.
полет нормальный:
Так возьмите код ТСа.
0
26.03.2017, 23:39

Не по теме:

hoggy, что за манеру вы взяли пихать ключи в демо-код?

0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
26.03.2017, 23:58
Цитата Сообщение от DevAlone Посмотреть сообщение
Так возьмите код ТСа.
его код не корректный.

а вопрос по существу:
так делать можно,
но не нужно.

если понадобилось,
значит шаблоно-код написанн
идеологически не верно.

Не по теме:


Цитата Сообщение от rikimaru2013 Посмотреть сообщение
что за манеру вы взяли пихать ключи в демо-код?
удобный кейс.
можно скопипастить ключики к себе в проект,
например.

а вообще, это "копипасто ориентированное программирование".
я ж не пишу их с нуля постоянно.
форкаю одну и ту же демку с настроенными ключиками.
а потом подсовываю нужный код.

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

1
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
27.03.2017, 10:29
Цитата Сообщение от hoggy Посмотреть сообщение
если понадобилось,значит шаблоно-код написанн идеологически не верно.
Насколько я понял вы против явного указания типа шаблона при вызове функций. А что тут идеологически неверно?
На мой взгляд все очень даже корректно. Шаблон - достаточно абстрактная вещь и иногда может понадобится явно указывать тип.

Например, с помощью функции sum мы захотим суммировать два "тяжеловесных" объекта которые нужно передавать по ссылке в целях оптимизации.
А простые типы например как int, передавать по значению.
В этом случае явное указание параметра шаблона может очень даже пригодится

Например:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <iostream>
 
struct LargeObject
{
    int n;
    LargeObject operator + (const LargeObject& f)
    {
        n += f.n;
        return *this;
    }
};
 
template <typename T>
auto sum(T a, T b) {
    typename std::remove_reference<T>::type result;
    result = (a + b);
    return result;
}
 
int main()
{
    LargeObject l1, l2;
    l1.n = 500;
    l2.n = 600;
    std::cout << (sum<LargeObject&>(l1, l2)).n << '\n';
    std::cout << sum(5, 5) << std::endl;
}
http://rextester.com/CTN92740
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
27.03.2017, 10:34
Цитата Сообщение от Алексаша Посмотреть сообщение
какой смысл в "< >". Ведь можно писать и без них?
Чтобы явно указать используемый тип в шаблоне функции. Иначе компилятор попытается сам его вывести. В конкретно вашем примере тип можно не указывать.
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
27.03.2017, 10:40
Цитата Сообщение от sys_beginner Посмотреть сообщение
А что тут идеологически неверно?
оно нафиг не нужно.
если понадобилось,
значит шаблон не выполняет свою задачу:
не обобщает.
не универсален.

Цитата Сообщение от sys_beginner Посмотреть сообщение
Например, с помощью функции sum мы захотим суммировать два "тяжеловесных" объекта которые нужно передавать по ссылке в целях оптимизации.
ваша функция sum - пример говнокода.


http://rextester.com/NMSH4515

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include <iostream>
 
struct LargeObject
{
    int n;
    LargeObject operator + (const LargeObject& f)const
    {
        LargeObject obj(*this);
        obj.n += f.n;
        return obj;
    }
};
 
 
// аргументы не обязаны быть одного типа
// складывать можно любые
// лишь бы они умели друг с дружкой складываться
template <typename T1, typename T2>
// google: Идеальная передача и универсальные ссылки в C++
// [url]https://habrahabr.ru/post/242639/[/url]
auto sum(T1&& a, T2&& b) {
    return std::forward<T1>(a) + std::forward<T2>(b);
}
 
int main()
{
    LargeObject l1, l2;
    l1.n = 500;
    l2.n = 600;
    
    // передача по ссылкам
    std::cout << sum(l1, l2).n << '\n';
    
    // передача как rvalue
    std::cout << sum(5, 5) << std::endl;
}
1
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
27.03.2017, 10:46
Цитата Сообщение от sys_beginner Посмотреть сообщение
n += f.n;
А должен ли вызов оператора + менять данные текущего объекта?

Добавлено через 4 минуты
Цитата Сообщение от sys_beginner Посмотреть сообщение
Например, с помощью функции sum мы захотим суммировать два "тяжеловесных" объекта которые нужно передавать по ссылке в целях оптимизации.
А простые типы например как int, передавать по значению.
Имеет смысл написать шаблон функции sum чтобы он мог работать с любыми объектами эффективно. А для "тяжеловесных" объектов должно быть достаточно определённого оператора +.

Добавлено через 26 секунд
Ну в общем-то про это итак уже написали.
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
27.03.2017, 10:46
Цитата Сообщение от MrGluck Посмотреть сообщение
А должен ли вызов оператора + менять данные текущего объекта?
очевидно жеж:
господин sys_beginner там слегка наделал уг.
0
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
27.03.2017, 10:50
Цитата Сообщение от hoggy Посмотреть сообщение
если понадобилось,
значит шаблон не выполняет свою задачу:
не обобщает.
не универсален
Как не выполняет? Вы утверждаете но не аргументируете. Когда указывается тип явно - обобщенность же не исчезает.
Просто она становится более вариативной.

Так называемые универсальные ссылки - это ссылки в любом случае rvalue или lvalue
Иногда может понадобится передавать именно копию а не ссылку
В таком случае ваш пример будет как вы сами сказали
не универсален.
Цитата Сообщение от MrGluck Посмотреть сообщение
А должен ли вызов оператора + менять данные текущего объекта?
Нет В торопях накосячил. Но суть мыслей думаю удалось передать

Добавлено через 1 минуту
Цитата Сообщение от MrGluck Посмотреть сообщение
Имеет смысл написать шаблон функции sum чтобы он мог работать с любыми объектами эффективно. А для "тяжеловесных" объектов должно быть достаточно определённого оператора +.
Это был пример идеи указывания типа явно. Это вполне себе может быть не sum а что то другое где перегрузкой плюсика не обойтись
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
27.03.2017, 10:56
Цитата Сообщение от sys_beginner Посмотреть сообщение
Как не выполняет? Вы утверждаете но не аргументируете
я вам даже код привел.
Цитата Сообщение от sys_beginner Посмотреть сообщение
Иногда может понадобится передавать именно копию а не ссылку
C++
1
2
3
//нужно передать копию?
some copy = origin; //<--- ну так сделайте её
foo(copy); // <--- и не парьте голову ни себе, ни людям
Добавлено через 2 минуты
Цитата Сообщение от sys_beginner Посмотреть сообщение
В таком случае ваш пример будет как вы сами сказали
на практике существует одна потребность - максимально эффективная передача аргументов.

а разруливать: вот здесь пусть аргументы идут по значению,
а вот здесь - по ссылке.
это - не универсальность.
это - лютый говнокод.
на практике случается чуть реже, чем никогда.
0
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
27.03.2017, 11:03
Цитата Сообщение от hoggy Посмотреть сообщение
и не парьте голову ни себе, ни людям
Я имел ввиду передать сразу копию. А не создать копию вне функции и передать её по ссылке
Вы когда передаете в функцию int по ссылке передаете?
Очевидно что нет

То что компилятор может сам определить тип - это вовсе не должно ущемлять возможность указывать тип явно.

Добавлено через 1 минуту
Цитата Сообщение от hoggy Посмотреть сообщение
это - не универсальность.
это - лютый говнокод.
Вы сами себе противоречите. Мой пример более универсальный и может то, чего не может ваш код.
И вы как сторонник универсальности почему то считаете более универсальную версию говнокодом

Добавлено через 2 минуты
Цитата Сообщение от sys_beginner Посмотреть сообщение
А не создать копию вне функции и передать её по ссылке
Кроме того, такой вариант более затратный. Ибо приходится:
1. Создать копию
2. Передать по ссылке

При прямой передачи копии достаточно создания одной копии.
0
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
27.03.2017, 11:10
Алексаша, Смотрите
C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
 
 
template < typename T >
T Div(T a, T b) {
    return a/b;
}
 
int main(){   
 std::cout << Div(5, 2) << '\n'; 
}
И посмотрите оба вывода. Вот приблизительно для этого лучше явно указывать.

Добавлено через 1 минуту
Об этом уже сказано выше, но просто словами.
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
27.03.2017, 11:23
Цитата Сообщение от daslex Посмотреть сообщение
И посмотрите оба вывода.
Чего-то не хватает..

Добавлено через 1 минуту
Мб Div<double>(5, 2)?

Добавлено через 1 минуту
Указывать надо явно в случае неоднозначности. К примеру
C++
1
Div(5.0, 2)
Добавлено через 16 секунд
Указывать надо явно в случае неоднозначности. К примеру
C++
1
Div(5.0, 2)
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
27.03.2017, 11:23
Цитата Сообщение от sys_beginner Посмотреть сообщение
Я имел ввиду передать сразу копию
я прекрасно понял, что вы имели ввиду.
это - нафиг никому не нужно.
пользователи не хотят лазить в реализацию вашего говнокода и чесать репу,
думая: как бы мне теперь не профакапить ссылку,
оно жеж тогда по значению попрет!

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

Цитата Сообщение от sys_beginner Посмотреть сообщение
Вы когда передаете в функцию int по ссылке передаете?
зависит от ситуации.
если нужна ссылка - передаю ссылку.

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

я ещё повторюсь: при программировании шаблонов,
программист мыслит категориями "некоторого типа T",
а не конкретными типами.

C++
1
2
3
4
5
6
7
8
void foo(const int); //<---- вот это int
 
template <class T, typename std::enable_if< std::is_intergal<T>::value >::type* = nullptr>
void foo(const T); //<---- а вот это любой интеграл
 
 
template <class T, typename std::enable_if< !std::is_intergal<T>::value >::type* = nullptr>
void foo(const T&); //<---- а вот это все остальное. кроме интегралов
Цитата Сообщение от sys_beginner Посмотреть сообщение
То что компилятор может сам определить тип - это вовсе не должно ущемлять возможность указывать тип явно.
вас никто и не ущемляет.
однако, если у вас возникла такая потребность,
значит вы пишите говнокод.

Цитата Сообщение от sys_beginner Посмотреть сообщение
Мой пример более универсальный и может то, чего не может ваш код.
1.
ваш более универсальный говнокод провоцирует ошибки.

2.
пользователь не должен париццо о том,
как именно ваша функция будет принимать объект.
он исходит из предположение максимальной эффективности.

3.
не должен сам постоянно указывать ссылочный тип при передаче крупных объектов.
это как минимум не удобно.
а писать ему это уг придется при таком подходе чуть реже, чем всегда.

4.
и о боже! не должен бояццо забыть прописать ссылочную семантику,
и профакапить ссылку.

5.
а факапить ссылку будут только так.
вы же сами профакапите.
потому что здравый смысл подсказывает:
явно указывать ссылочную семантику для шаблона - избыточно.




Цитата Сообщение от sys_beginner Посмотреть сообщение
Кроме того, такой вариант более затратный. Ибо приходится:
1. Создать копию
2. Передать по ссылке
При прямой передачи копии достаточно создания одной копии.
передача по ссылке затратно? вы это серьёзно?
1
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
27.03.2017, 11:47
Цитата Сообщение от hoggy Посмотреть сообщение
я прекрасно понял, что вы имели ввиду.
Но тем не менее ваш пример не соответствовал этому
Цитата Сообщение от hoggy Посмотреть сообщение
это - нафиг никому не нужно.
пользователи не хотят лазить в реализацию вашего говнокода и чесать репу,
думая: как бы мне теперь не профакапить ссылку,
оно жеж тогда по значению попрет!
Так в том и дело что лазить в реализацию не нужно. T - шаблонный аргумент и чем больше воли мы даем пользователю этого шаблона решать самому ссылка это или нет тем лучше и гибче. Наоборот в вашем случае пользователю нужно лезть в вашу "крутую реализацию" и постоянно помнить что аргументы это так называемые универсальные ссылки.
А когда просто T - это означает любой тип который туда может подставить компилятор и программист уже сам решает чего подставлять туда когда в этом есть необходимость.

Цитата Сообщение от hoggy Посмотреть сообщение
программист мыслит категориями "некоторого типа T",
Вот и я об этом говорю
Цитата Сообщение от hoggy Посмотреть сообщение
значит вы пишите говнокод.
Вам еще один пример с делением привели. Неужели недостаточно что бы признать что это не так?

Цитата Сообщение от hoggy Посмотреть сообщение
он исходит из предположение максимальной эффективности.
В том то и дело что передача простых типов как утверждают многие специалистов должна быть не по ссылке и что это мешает компилятору делать оптимизации.

Цитата Сообщение от hoggy Посмотреть сообщение
передача по ссылке затратно? вы это серьёзно?
На сколько мне известно при прямой передачи копии компилятор может сгенерировать код для создания этой копии в той области памяти куда кладется возвращаемое значение и оперировать изменениями сразу в той же области памяти. Для ссылок помоему такое поведение исключается

Добавлено через 12 минут
Цитата Сообщение от sys_beginner Посмотреть сообщение
Для ссылок помоему такое поведение исключается
Таким образом простые типы передавать методом копирования в функцию более выгодно
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
27.03.2017, 11:54
Цитата Сообщение от sys_beginner Посмотреть сообщение
Но тем не менее ваш пример не соответствовал этому
разумеется.
мой пример - пример грамотной реализации.
Цитата Сообщение от sys_beginner Посмотреть сообщение
Так в том и дело что лазить в реализацию не нужно. T - шаблонный аргумент и чем больше воли мы даем пользователю этого шаблона решать самому ссылка это или нет тем лучше и гибче.
гибкость ради гибкости не нужна.

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

Цитата Сообщение от sys_beginner Посмотреть сообщение
Вам еще один пример с делением привели. Неужели недостаточно что бы признать что это не так?
пример с делением - пример ущербного шаблона.
ещё раз:

C++
1
2
3
4
5
6
7
8
9
// аргументы не обязаны быть одного типа
// складывать можно любые
// лишь бы они умели друг с дружкой складываться
template <typename T1, typename T2>
// google: Идеальная передача и универсальные ссылки в C++
// [url]https://habrahabr.ru/post/242639/[/url]
auto sum(T1&& a, T2&& b) {
    return std::forward<T1>(a) + std::forward<T2>(b);
}
переделайте сложение на деление.
и получите:
1.
отсутствие неоднозначностей.
2.
делить можно будет любые типы, лишь бы они умели делиццо.
3.
результатом выражения будет их нативный std::common_type,
как и должно быть при честном делении.
4.
эффективную передачу аргументов.

Цитата Сообщение от sys_beginner Посмотреть сообщение
В том то и дело что передача простых типов как утверждают многие специалистов должна быть не по ссылке и что это мешает компилятору делать оптимизации.
1.
все это пропаганда гнилого запада херня.
копеечная микрооптимизация,
которая может иметь место быть для простых функций,
реализация которых торчит в соседней либе.
2.
шаблоно-код обладает важной особенностью:
он всегда полностью виден единице трансляции.
и поэтому волшебным образом inline во все поля отлично оптимизуется.

компилятор не просто оптимизирует саму ссылку,
но и вообще всю функцию,
или шаблоно-класс целиком.

Цитата Сообщение от sys_beginner Посмотреть сообщение
На сколько мне известно при прямой передачи копии компилятор может сгенерировать код для создания этой копии в той области памяти куда кладется возвращаемое значение и оперировать изменениями сразу в той же области памяти. Для ссылок помоему такое поведение исключается
не распарсил этот поток сознания.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.03.2017, 11:54
Помогаю со студенческими работами здесь

Шаблоны. Плохо понимаемые моменты из книги "Шаблоны С++. Справочник разработчика". (Вандевурд, Джосаттис)
Так как изучаю эту книгу, то в некоторых местах возникают вопросы. Чтобы не плодить много тем, корни у которых одни, решил создать эту...

Помогите писать на С++ через шаблоны. Консуле я писал, но надо писать исползуя шаблоны
В одномерном массиве, состоящем из п вещественных элементов, вычислить: 1) количество элементов массива, равных 0; 2) сумму элементов...

Шаблоны в C++
Доброго времени суток! Начал разбираться что такое шаблон и с чем его едят. Загуглил, вставил код из википедии. Ошибка. ...

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

шаблоны в си++
кто может сказать где прблема? List.h #ifndef LIST_H #define LIST_H #include&lt;iostream&gt; #include&lt;ostream&gt; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение Это мой обзор планшета X220 с точки зрения школьника. Недавно я решила попытаться уменьшить свой. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru