LINUX.ORG.RU

ООО ВекторЪ (список учредителей инсайд)

 , манямирок


0

1

Посоветуйте хоть одну причину создавать вектор на основе... std::list. Но называть его при этом не список, а вектор. На основе std::list, Карл! Второй раз встречаю эту забавную подмену понятий (первый раз в продукшын коде с обоснуем «так получилось»).

Вдохновлено гиперактивным познаванием мира «в стиле с++11» тут Корректная очистка контейнеров в c++11

★★★★★

Последнее исправление: slackwarrior (всего исправлений: 1)

И снова в интернете кто-то не прав!

Deleted
()
Ответ на: комментарий от lovesan

писатели на коммон лиспе они такие

anonymous
()
Ответ на: комментарий от lovesan

Ты чот попутал. Где тут STL? В том треде ТС хватается за некий «C++11 стайл» не понимая сути контейнера «вектор». И чем он внатуре отличается от «std::list».

slackwarrior ★★★★★
() автор топика
Ответ на: комментарий от CatsCantFly

За STL есть чего сказать? :) Хэш таблицы в ней называются unordered_map, но это не меняет ни семантики использования, ни естественной для данного контейнера организации памяти.

slackwarrior ★★★★★
() автор топика
Ответ на: комментарий от jtootf

STL-вектор он не (математический) вектор ни разу

https://en.wikipedia.org/wiki/Column_vector. Можно долго спорить относительно наличия/отсутствия алгебраических операций, но по сути вполне неплохо подходит.

Gvidon ★★★★
()
Последнее исправление: Gvidon (всего исправлений: 1)
Ответ на: комментарий от Gvidon

но по сути вполне неплохо подходит.

Ага, особенно наличие операции а-ля push_back и отсутствие операций а-ля сложение векторов.

Нет, конечно. Конечно не подходит. Причём именно по сути.

nezamudich ★★
()
Ответ на: комментарий от Gvidon

... но по сути вполне неплохо подходит.

Совершенно не подходит. Вектор это математическое понятие, оно не подразумевает вообще никакой конкретной структуры данных. Оно одинаково хорошо ложится на сишный массив, std::list, std::vector, std::map и многие другие контейнеры. Литерал vector в std::vector не несёт сам по себе никакой смысловой нагрузки, это ~buzzword для которого просто нужно знать набор свойств.

mashina ★★★★★
()
Ответ на: комментарий от mashina

Это просто слово, оно не обязано полностью соответствовать своему значению в математике. Давай ещё вспомним «класс» или «функтор», это тоже математические термины. Да, у слова «программирование» в математике тоже есть своё значение, давай, расскажи мне как оно связано с тем, что обычно под ним понимается.

Gvidon ★★★★
()
Ответ на: комментарий от nezamudich

Так же можно придраться к слову «целое» (integer), давай от него откажемся.

Gvidon ★★★★
()

Слушайте, а какой наркоман вообще придумал назвать массив вектором? Кажется кроме плюсов нигде больше нет такой шизы. Ну я понимаю, что термин array занят, ну назвали бы yoba_array, все равно там полно подобного трэша. Вектор совершенно контринтуитивный термин здесь.

anonymous
()
Ответ на: комментарий от Gvidon

Это просто слово, оно не обязано полностью соответствовать своему значению в математике.

Ну и зачем тянуть из математики термины для описания совершенно нерелевантных вещей? Когда читаешь плюсовые срачи, так создается впечатление, что они там все задрачивают линейную алгебру. Кстати, с функтором та же фигня.

anonymous
()

вообще-то и то, и другое — sequence container и поэтому до некоторой степени взаимозаменяемые. выбор vector vs list, очевидно, определяется преобладающими операциями над этим контейнером.

anonymous
()

На каждое кривое решение найдётся говнокодер, который будет защищать его до потери пульса.

rupert ★★★★★
()
Ответ на: комментарий от anonymous

вектор совершенно определенный термин здесь с совершенно определенными свойствами (интуитивность - производная знаний этих свойств, а не маркетинговая «интуитивность интерфейса», которой не существует :)) потому что лист - нечто совершенно другое :)

slackwarrior ★★★★★
() автор топика
Ответ на: комментарий от anonymous

ну липовая же взаимозаменяемость: колебания с выбором у тех, кто не знает чего хочет :) (По дефолту «сомневаешься - бери вектор» - хоть перебор в цикле sequence containerа не будет тормозить, хотя лист - он весь про вставку, а не про перебор, и отдельно сортировать его при правильной вставке «ниннада» - в специфических случаях вообще можно intrusive лист «переизобрести» как в бусте) Алсо «Is there ever a reason to use std::list? [duplicate]» - платиновый вопрос StackOverflow и подобных сайтов :) На который некоторые пускаются в объяснялки О-нотации людям, которые про нее вообще не в курсе с цитатами из Степанова, а другие глубокомысленно замечают «std::list is useful in a few corner cases» (с) Если есть необходимость вставок/удолений из-в-на середины.

slackwarrior ★★★★★
() автор топика

Потому что плюсовики должны страдать.

anonymous
()
Ответ на: комментарий от anonymous

а какой наркоман

Ну известно же, какой :)

slackwarrior ★★★★★
() автор топика
Ответ на: комментарий от SystemD-hater

умный, а умный... поумничай по теме, а? :)

slackwarrior ★★★★★
() автор топика
Ответ на: комментарий от Gvidon

Да как то похер на биологию. У программистов несколько иной бэкграунд знаешь ли.

anonymous
()
Ответ на: комментарий от slackwarrior

Алсо «Is there ever a reason to use std::list? [duplicate]» - платиновый вопрос StackOverflow и подобных сайтов

Наглядно показывает уровень плюсовиков, почему то мнящих себя илиткой. Впрочем, что касается нубов, то с такой терминологией немудрено запутаться. Вектор вполне логично ассоциируется со списком, а вовсе не с массивом.

anonymous
()

На основе std::list, Карл!

Откуда этот шибанутый мем про Карла?

prefetch
()
Ответ на: комментарий от slackwarrior

На который некоторые пускаются в объяснялки О-нотации людям, которые про нее вообще не в курсе

А что эти дебилы вообще забыли в программировании тогда?

hateyoufeel ★★★★★
()
Ответ на: комментарий от hateyoufeel

Когда ты чему-то учишься - чего-то не знать не стыдно (спросить знающих людей, например, просветлиться) :) А вот если не учишься (но рассуждаешь про «С++11 стайл» не видя разницы между списком и вектором) - тады ой.

slackwarrior ★★★★★
() автор топика
Последнее исправление: slackwarrior (всего исправлений: 1)
Ответ на: комментарий от slackwarrior

Я к тому, что без основных знаний об алгоритмах и сложности лучше не начинать программировать, а C++ - не слишком подходящий для обучения язык.

hateyoufeel ★★★★★
()

Массив это частный случай списка. Например в Java есть интерфейс List и его реализация ArrayList. А что удивляет?

Legioner ★★★★★
()

Если идиоту сказать на код-ревью, что тут уместнее list, а не vector, от идиот поменяет тип, но оставит название переменной. Потом на следующей итерации ему приходится показывать зеркало и объяснять, что он в нем видит. Но если код-ревью нет, то такое легко идет в продакшн. Классика же.

Pavval ★★★★★
()
Ответ на: комментарий от Pavval

Ну кэп, ну зачем вот так в глаза людям говорить правду :)

slackwarrior ★★★★★
() автор топика
Ответ на: комментарий от Gvidon

по сути вполне неплохо подходит

не подходит. там немного ниже чёрным по белому написано - вектор есть элемент векторного пространства, а значит его координаты не константны, а зависят от выбора базиса

jtootf ★★★★★
()
Ответ на: комментарий от Gvidon

в большинстве языков для обозначения массива используется слово array или даже sequence. vector - это, прежде всего, локальный C++-специфический термин, введённый из-за legacy (о чём есть у Страуструпа, вообще говоря)

C++-функтор в этом смысле ещё хуже, потому как термин функтор в другом (и более близком математическому) смысле в программистской среде прижился раньше и используется до сих пор

jtootf ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.