ФлеймФорумЮмор

Перлы Форума Gamedev.ru (522 стр)

Страницы: 1521 522 523 524526 Следующая »
#7815
(Правка: 12:42) 12:39, 20 июля 2024

monobogdan
> Гпу - не процессор общего назначения, он "мыслит" сразу векторами.
Уже лет 15 как не мыслит.

totoro
> И тут Остапа понесло… Вектор, если что -это математический объект.
В этом смысле, любой тензор — это вектор, потому что их можно собирать в линейные комбинации.

#7816
12:45, 20 июля 2024

Mirrel
Вектор, в зависимости от контекста, определяет разные объекты:
1. Объект математики (vec2d, vec3d)
2. Объект-множество (std::vector, SIMD)

#7817
12:52, 20 июля 2024

Имбирная Ведьмочка
> В этом смысле, любой тензор — это вектор
В википедии написано, что это векторы.

#7818
13:02, 20 июля 2024

totoro
> В википедии написано, что это векторы.
https://ru.wikipedia.org/wiki/Векторное_пространство#Определение

#7819
13:06, 20 июля 2024

Имбирная Ведьмочка
> https://ru.wikipedia.org/wiki/Векторное_пространство#Определение
Зачем это? Обычно мне не нужно погружаться в математические дебри, для того чтобы написать хорошо структурированный код, достаточно общих определений. Научные изыскания оставим математикам.

#7820
18:51, 20 июля 2024

totoro
> 2. Объект-множество (std::vector, SIMD)
В С++ то, что называется std::vector на самом деле должно быть std::array, а то, что называется std::array - должно быть std::vector. Но это С++, и неадекватного нейминга там полно.

#7821
19:36, 20 июля 2024

MrShoor
> В С++ то, что называется std::vector на самом деле должно быть std::array, а то, что называется std::array - должно быть std::vector. Но это С++, и неадекватного нейминга там полно.
>
>

Окей, чатГПТ

В C++ `std::vector` и `std::array` имеют разные цели и предназначены для различных случаев использования, что и объясняет их разделение. Вот основные различия между ними:

1. **Размер**:
  - `std::array`: Это контейнер фиксированного размера, который задается во время компиляции. Размер массива не может изменяться после создания.
  - `std::vector`: Это контейнер динамического размера, который может изменяться в процессе выполнения программы. Вы можете добавлять или удалять элементы, и вектор автоматически управляет своей памятью.

2. **Производительность**:
  - `std::array`: Так как размер фиксированный, доступ к элементам происходит очень быстро и с минимальными накладными расходами. Также он может быть размещен на стеке.
  - `std::vector`: Из-за динамического управления памятью могут быть накладные расходы на выделение и освобождение памяти, а также на возможные перераспределения памяти, если вектор растет.

3. **Использование памяти**:
  - `std::array`: Размер массива компилируется в программу, и память под элементы выделяется сразу.
  - `std::vector`: Память выделяется динамически, и вектор может выделять больше памяти, чем фактически используется, чтобы уменьшить накладные расходы на выделение при добавлении элементов.

4. **Flexibility**:
  - `std::array`: Имеет фиксированное количество элементов, что делает его полезным в ситуациях, когда вам нужно заранее знать количество элементов (например, для работы с матрицами фиксированного размера).
  - `std::vector`: Предоставляет гибкость в управлении количеством элементов, что делает его более подходящим для случаев, когда размер данных может изменяться.

В общем, выбор между `std::array` и `std::vector` зависит от ваших конкретных требований к производительности и удобству использования.

#7822
19:52, 20 июля 2024

0iStalker
> Окей, чатГПТ
>
> В C++ `std::vector` и `std::array` имеют разные цели и предназначены для различных случаев использования, что и объясняет их разделение. Вот основные различия между ними
Я прекрасно знаю различия. И именно поэтому и говорю, что std::vector и std::array было бы логичнее поменять местами.
Где например ты видел, чтобы вектора меняли свою размерность на лету? Ну кроме С++

#7823
19:55, 20 июля 2024

MrShoor
> Ну кроме С++

Жаба и шарп/дотнет :)

#7824
20:01, 20 июля 2024

Dmitry_Milk
> Жаба и шарп/дотнет :)
В жабе не знаю, а в дотнете - нет, вектор не может менять свой размер

#7825
20:16, 20 июля 2024

MrShoor
> В С++ то, что называется std::vector на самом деле должно быть std::array
В плюсах вектор по аналогии с дотнетом должен называться ArrayList, а лист - LinkedList, std::array в идеале просто должен враппить массивы и предоставлять обертки над realloc, безопасного memcpy и т.п.
А нейминг дотнета действительно замечательный :)

#7826
20:28, 20 июля 2024

monobogdan
> А нейминг дотнета действительно замечательный :)
Он конечно лучше чем в С++, но далеко не замечательный.
Вот представь, что ты впервые смотришь List<T>. Какие у тебя мысли? У меня лично первая мысль - это Linked List. Но со связанным списком он не имеет ничего общего.
Или Dictionary. Под капотом это хешмапа, но по неймингу этого не видно. Вдруг это бинарное дерево?

Я лично считаю, что если вы фиксируете реализацию, то это надо отражать в нейминге.
List -> DynArray
Dictionary -> HashMap
PriorityQueue -> BinHeap
SortedDictionary -> BinTree

#7827
20:31, 20 июля 2024

MrShoor
С такой точки зрения лучше всего в Java. Там List изначально абстрактный, от которого наследуется уже ArrayList и LinkedList. Тоже самое с словарями.

#7828
20:57, 20 июля 2024

В принципе, не из чего не следует, что vector и array названы взаимнонеправильно.  Единственная претензия к вектору, как я слышал, в cpp, это то что в матане есть свой вектор, над которым определены свои "векторные" математические операции. Если их поменять местами, то претензия к вектору всё равно остаётся.  Кстати, а что там в Rust'е придумали на этот счёт?

#7829
21:16, 20 июля 2024

0iStalker
> В принципе, не из чего не следует, что vector и array названы взаимнонеправильно.
Для меня следует. В математике есть вектора. Я так понимаю в программировние понятие vector пришло именно из математики. Но только это понятие извратилось, и наш вектор стал менять размер на лету. При этом есть "вектора" фиксированного размера, но их почему то называют array.

> Если их поменять местами, то претензия к вектору всё равно остаётся.
А какая претензия останется?

> Кстати, а что там в Rust'е придумали на этот счёт?
В Расте вектор собъезьянничали с С++. Там это Vec<T>
А вот остальные контейнеры названы более адекватно:
std::unordered_map -> HashMap
std::map -> BTreeMap
std::priority_queue -> BinaryHeap

Страницы: 1521 522 523 524526 Следующая »
ФлеймФорумЮмор