Size: a a a

2020 August 06

DP

Denis Paukaev in supapro.cxx
В Гугле вбей
источник

JS

Java Scripter in supapro.cxx
Егор
 Overload(const size_t *value)
{
 set_capasity(1);
}

что за ловушки
Это изначальный размер массива потом он расширяется
источник

Е

Егор in supapro.cxx
Java Scripter
Это изначальный размер массива потом он расширяется
а value  это кто
источник

JS

Java Scripter in supapro.cxx
Это у меня прога такой конструктор требовал типо я для этого там это написал
источник

SS

Sergey Skvortsov in supapro.cxx
Vlad Serebrennikov
правда, поведение int64_t x = elem; не определено, если значение elem больше, чем максимально возможное для int64_t
Достаточно определено же
источник

VS

Vlad Serebrennikov in supapro.cxx
Sergey Skvortsov
Достаточно определено же
и что происходит?
источник

K

Konstantin in supapro.cxx
Vlad Serebrennikov
правда, поведение int64_t x = elem; не определено, если значение elem больше, чем максимально возможное для int64_t
Я знаю
источник

SS

Sergey Skvortsov in supapro.cxx
Vlad Serebrennikov
и что происходит?
Если не влезает, то до C++20 implementation defined значение (не уб), после - гарантировано сравнимое по модулю 2^(ширина целевого числа)
источник

K

Konstantin in supapro.cxx
128-битовые типы нужны мне только для промежуточных вычислений
источник

K

Konstantin in supapro.cxx
Кстати, а настоящий вывод больших типов как можно сделать?
источник

K

Konstantin in supapro.cxx
Только ручками и манипуляциями с битами?
источник

K

Konstantin in supapro.cxx
А
источник

K

Konstantin in supapro.cxx
%
источник

АК

Александр Караев... in supapro.cxx
Konstantin
Только ручками и манипуляциями с битами?
если в десятичном виде, то разделить на части размера 10^N и выводить (как костыль)
источник

K

Konstantin in supapro.cxx
Александр Караев
если в десятичном виде, то разделить на части размера 10^N и выводить (как костыль)
Можно за <=128 операций же
источник

AS

Anatoly Shirokov in supapro.cxx
Java Scripter
#include <iostream>
/*
ДОМАШНЕЕ ЗАДАНИЕ
Задание 1: Реализуйте следующие методы для IntArray
- перегрузите оператор[](для доступа к элементам массива)
- перегрузите оператор + для объединения двух массивов(возвращает новый
IntArray, который содержит элементы первого и второго массива)
- перегрузите оператор ввода и вывода для типа IntArray
*/

class Overload
{
public:
Overload() = default;
Overload(const size_t *value)
{
 set_capasity(1);
}

void set_capasity(const size_t& value)
{
 size_t* temp_arr = new size_t[value];
 for (int i = 0; i < m_lenght; i++)
 {
  temp_arr[i] = m_arr[i];
 }
 delete[]m_arr;
 m_arr = temp_arr;
 m_capasity = value;
}

void new_element(const size_t& element)
{
 if (m_lenght == m_capasity)
 {
  set_capasity(m_capasity + 2);
 }
 m_arr[m_lenght] = element;
 m_lenght++;
}

size_t& operator[](size_t value)
{
 return m_arr[value];
}

Overload operator + (const Overload& right) const
{
 Overload temp_arr;
 for (int i = 0; i < m_lenght; i++)
 {
  temp_arr.new_element(m_arr[i]);
 }

 for (int i = m_lenght; i < right.m_lenght; i++)
 {
  temp_arr.new_element(right.m_arr[i]);
 }

 return temp_arr;
}

~Overload()
{
 delete[]m_arr;
}
private:
size_t m_lenght = 0;
size_t m_capasity = 0;
size_t* m_arr = nullptr;
};

void main()
{
Overload arr;
arr.new_element(15);
arr.new_element(5);
arr.new_element(1);
arr.new_element(6);
arr.new_element(9);
arr.new_element(7);
arr.new_element(8);
arr.new_element(9);
arr.new_element(1);

std::cout << arr[5];
std::cout << '\n';
Overload arr1;
arr1.new_element(35);
arr1.new_element(61);
arr1.new_element(11);
arr1.new_element(67);
arr1.new_element(99);
arr1.new_element(73);
arr1.new_element(81);
arr1.new_element(92);
arr1.new_element(18);

std::cout << arr1[5];

Overload arr2 = arr + (arr1);
}
гугли правило 3/5, и capasity исправь на capacity
источник

АК

Александр Караев... in supapro.cxx
Konstantin
Можно за <=128 операций же
это если в бинарном виде
источник

K

Konstantin in supapro.cxx
ой
источник

K

Konstantin in supapro.cxx
Тут ещё меньше
источник

K

Konstantin in supapro.cxx
<=38, если память не изменяет
источник