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);
}
}
УНИВЕРСАЛЬНЫЙ КАСТ В С++
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;
}
}
};
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 };