Forwarded from Базар
//безопасное //перемещение //указателя.
struct object_data{
int a = 0;
};
std::unique_ptr<object_data> ptr = std::make_unique<objec_data>();
std::unique_ptr ptr2 = std::move(ptr);
//что стало с указателем ptr и ptr2?
//мы передали указатель ptr в ptr2 и теперь ptr не указаывает на object_data и теперь нужно обращатся к ptr2
new int и make_unique<int>() это разные вещи
Вот эта строка создаёт
А вот это — value-initialization, и
Для правильной инициализации используй
👩💻 HCPP DEV. Подписаться
new int не инициализирует значение, ты получаешь мусор (а чтение такого значения — уже UB).Вот эта строка создаёт
int с неопределённым содержимым:new int
А вот это — value-initialization, и
int станет 0:new int()
std::make_unique<int>() как раз создаёт объект с value-initialization, поэтому *ptr2 будет нулём, а *ptr1 — мусорauto ptr2 = std::make_unique<int>();
Для правильной инициализации используй
{}/():Please open Telegram to view this post
VIEW IN TELEGRAM
😁1
HCPP DEV | (uint8_t)0x539 pinned «new int и make_unique<int>() это разные вещи new int не инициализирует значение, ты получаешь мусор (а чтение такого значения — уже UB). Вот эта строка создаёт int с неопределённым содержимым: new int А вот это — value-initialization, и int станет 0: new…»
Правильная последовательность - это залог хорошего кода.
В С++20 есть
И нам надо вывести данные по порядку , которые есть у нас в массиве
std::span он гарантирует правильную последовательность данных
👩💻 HCPP DEV. Подписаться
В С++20 есть
std::span
И нам надо вывести данные по порядку , которые есть у нас в массиве
const std::string names[]={
“John Pork”,
“Fil Pork”,
“Sandy Pork”
};
std::span names_out{names};
for(auto name : names_out){
std::print(“name : {}/n”,name);
}
std::span он гарантирует правильную последовательность данных
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
This media is not supported in your browser
VIEW IN TELEGRAM
🔥1
Forwarded from ты nowkie?
стоим с ильей ща 👍
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1
до сих так и не понял кто это. Но как будто нашел его.
и его сайт нашел и он занимается програмированием)
и его сайт нашел и он занимается програмированием)
PahomEngine.zip
41 MB
крупное техническое обновление.
0.8.820
Кратно улучшена производительность.
Оптимизировал потребление памяти на 10 мбайт меньше ест игра.
системные требования
цпу: любой с поддержкой sse4.1 и x64
озу 150 мб
видеокарта : с поддержкой 64 мбайт и OpenGL3.3
установлены редисты С++2019 x64
ОС Windows 7 x64 ultimate с обновлениями 20 года
Windows 8.1 x64 с последними обновлениями
и выше
0.8.820
Кратно улучшена производительность.
Оптимизировал потребление памяти на 10 мбайт меньше ест игра.
системные требования
цпу: любой с поддержкой sse4.1 и x64
озу 150 мб
видеокарта : с поддержкой 64 мбайт и OpenGL3.3
установлены редисты С++2019 x64
ОС Windows 7 x64 ultimate с обновлениями 20 года
Windows 8.1 x64 с последними обновлениями
и выше
This media is not supported in the widget
VIEW IN TELEGRAM
у кого есть укр карта?
и чтобы смог потом криптой закинуть мне
и чтобы смог потом криптой закинуть мне
😁1
УМНЫЙ РАНДОМ в С++ (PahomEngine)
// set flag to use random engine e.d random_device to #include <random>
// in true || false
// - true -- enable random_device and std::mt19997
// - false -- disable random_device random use C rand();
void setRandomEngineUsed(bool v) {
bIsRandomEngineUsed = v;
//std::cout << " (random_engine) enabled: " << (bIsRandomEngineUsed ? "true\n" : "false\n");
}
// random engine func
// use: PahomEngine->math->random<type>(max_value,isCached);
// sample:
// int64_t i64ValueRandom = PahomEngine->math->random<int64_t>(255,false);
template <typename Tm>
Tm random(Tm value_max, bool bIsUseCachedRandom = false) {
if(bIsRandomEngineUsed)
{
if (!bIsUseCachedRandom)
{
std::random_device rd_no_cached;
std::mt19937 gen_no_cached(rd_no_cached());
if constexpr (std::is_floating_point_v<Tm>) {
std::uniform_real_distribution<Tm> dist(0, value_max);
return dist(gen_no_cached);
}
else {
std::uniform_int_distribution<Tm> dist(0, value_max);
return dist(gen_no_cached);
}
}
else {
gen.seed(rd());
if constexpr (std::is_floating_point_v<Tm>) {
std::uniform_real_distribution<Tm> dist(0, value_max);
return dist(gen);
}
else {
std::uniform_int_distribution<Tm> dist(0, value_max);
return dist(gen);
}
}
}
else {
return static_cast<Tm>(rand() % (int)value_max);
}
}