Здравствуйте, Klapaucius, Вы писали:
K>Здравствуйте, tripol, Вы писали:
FR>>>В NET указатели есть. T>>В "unsafe code" правда.
K>А где указатели есть в safe code?
Здравствуйте, Klapaucius, Вы писали:
K>Здравствуйте, tripol, Вы писали:
FR>>>В NET указатели есть. T>>В "unsafe code" правда.
K>А где указатели есть в safe code?
Малость не понял вопрос.
Хрен его знает. В C++ понятия safe code нет, и оно ему не нужно.
Здравствуйте, c-smile, Вы писали:
CS>То что список как структура данных имеет свои уникальные свойства — понятно и никем не оспаривается. CS>Конечно же есть *алгоритмы* для которых требуются такие уникальные свойства. CS>Проблема в том что неинтрузивные списки как коллекции не эффективны. А с интрузивными списками концепция итераторов как-то не вяжется. CS>Тогда вся концепция итераторов как обобщения выглядит весьма ограниченной — фактически iterators эффективны только для векторов.
Ну, так может дело не в списках, а в iterators С++?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Ikemefula, Вы писали:
I>А что можно предложить взамен ?
Более простые итераторы которые позволяют только перебрать элементы по порядку. Как я понимаю аналогичную фичу в В назвали диапазонами. А в дотнете она известна под идиотским императивным (но тем не менее вполне приемлемым) интерфейсом IEnumerabl<T>.
I>Итератор это всего лишь отделение обхода от структуры.
Итераторы С++ излишне переусложнены.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, Ikemefula, Вы писали:
I>>А что можно предложить взамен ?
VD>Более простые итераторы которые позволяют только перебрать элементы по порядку. Как я понимаю аналогичную фичу в В назвали диапазонами. А в дотнете она известна под идиотским императивным (но тем не менее вполне приемлемым) интерфейсом IEnumerabl<T>.
I>>Итератор это всего лишь отделение обхода от структуры.
VD>Итераторы С++ излишне переусложнены.
Для пользователя идентично работе с указателями. Для Random итератора
доступны все операторы, которые применимы к указателю, в том числе
адресная арифметика. Для Forward итератора: ++, * и еще может какие.
Что бы этого достичь, конечно нужно больше кода.
Не вижу сложности в их использовании.
Здравствуйте, CreatorCray, Вы писали:
CC>Здравствуйте, tripol, Вы писали:
K>>>А где указатели есть в safe code? T>>http://msdn.microsoft.com/en-us/library/t2yzs44b.aspx CC>Статья там называется "Unsafe Code and Pointers (C# Programming Guide)"
Здравствуйте, c-smile, Вы писали:
CS>Здравствуйте, minorlogic, Вы писали:
M>>Здравствуйте, c-smile, Вы писали:
CS>>>Проблема в том что неинтрузивные списки как коллекции не эффективны. M>>А конкретно? уточните.
CS>Давай рассмотрим практическую задачу. CS>Ну скажем устройство DOM элемента в HTML.
CS>
CS>namespace dom
CS>{
CS> class node { ... }
CS> class element: public node
CS> {
CS> collection<node*> children; /* все дети */
CS> collection<node*> visuals; /* отображаемые дети */
CS> }
CS>}
CS>
CS>Если collection это list<> то на каждый элемент в children и visuals создается CS>дополнительно list item в размере 3х указателей. CS>В случае когда collection<> это vector<> то на каждый элемент имеем один указатель — элемент массива.
Ты не совсем прав. vector резервирует память для амортизации push_back, т.е. на самом деле у тебя будет 1.5-2 кратный перерасход памяти в худшем случае. Т.е. быстродействие покупается ценой расхода памяти.