HCPP DEV | (uint8_t)0x539
71 subscribers
327 photos
43 videos
69 files
296 links
Разработка на С++
в Visual Studio 2026 Community
И немного хуйни
пиздатый сайт мой https://hcpp20334.github.io
пиздатый гитхаб https://github.com/hcpp20334

помочь проекту
https://donationalerts.com/r/hcpp
Download Telegram
Forwarded from Базар
Хотели бы Вы расформирования РоскомПозора?
Anonymous Poll
94%
Да
6%
Нет
//безопасное //перемещение //указателя.

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>() это разные вещи

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>();


Для правильной инициализации используй {}/():

👩‍💻 HCPP DEV. Подписаться
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


И нам надо вывести данные по порядку , которые есть у нас в массиве

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 он гарантирует правильную последовательность данных

👩‍💻 HCPP DEV. Подписаться
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
This media is not supported in your browser
VIEW IN TELEGRAM
🔥1
не соберет новки 60 млн просмотров
Forwarded from ты nowkie?
стоим с ильей ща 👍
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1
до сих так и не понял кто это. Но как будто нашел его.

и его сайт нашел и он занимается програмированием)
HCPP DEV
Photo
и оплата с европейской карты была
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 с последними обновлениями
и выше
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);
}
}
УНИВЕРСАЛЬНЫЙ КАСТ В С++
    template <typename In, typename Out>
Out unicast(In value) {
if constexpr (std::is_arithmetic_v<In> && std::is_arithmetic_v<Out>) {
return static_cast<Out>(value);
}
else {
std::string sv;
if constexpr (std::is_convertible_v<In, std::string>) {
sv = value;
}

Out result{};
auto [ptr, ec] = std::from_chars(sv.data(), sv.data() + sv.size(), result);
if (ec == std::errc::invalid_argument) {
throw std::invalid_argument("unicast: not a number");
}
else if (ec == std::errc::result_out_of_range) {
throw std::out_of_range("unicast: out of range");
}

return result;
}
}
};
собрал по 6502 себе карточку )
   struct UniVec2 {
T a, b;
constexpr UniVec2() : a(), b() {}
constexpr UniVec2(T _a, T _b) : a(_a), b(_b) {}
size_t size() const {
size_t out_size = sizeof(this->a) + sizeof(this->b);
return out_size;
}
};
struct d64Vec2 {
double64_t x, y;
constexpr d64Vec2() : x(0.0L), y(0.0L) {}
constexpr d64Vec2(double64_t _x,double64_t _y) : x(_x), y(_y) {}
constexpr size_t size() const {
return sizeof(this->x) + sizeof(this->y);
}
};
UniVec2<UniVec2<d64Vec2>> vc42 = { {{3.43543,5.3453} ,{5.453453,5.5656353}},{{3.52426532,5.564645353},{5.76762424,6.455434545}} };
d64Vec2 d64v2 = { 5.454354,4.21342 };