Re: Маленькое уточнение
От: c-smile Канада http://terrainformatica.com
Дата: 25.07.10 19:04
Оценка:
Здравствуйте, minorlogic, Вы писали:

M>Здравствуйте, c-smile, Вы писали:


M>Маленькое уточнение , вы не ошиблись , может так ?

M>
M>  node* children_head; // children list subnodes head
M>  node* visual_head; // visuals list  subnodes head
M>


M>Или я что то проглядел ?


См. class element {}
Т.е. в случае intrusive list

class element 
{
  node* first_child; // children list subnodes head
  node* first_visual_child; // visuals list  subnodes head
}


не все nodes могут имет children. Например text[_node] есть leaf.
Re[5]: lists must go?
От: Roman Odaisky Украина  
Дата: 25.07.10 19:13
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>Т.е. для перебора children и visuals используем:

CS>
CS>for(node *n = children; n; n = n->next) { ... }
CS>for(node *n = visuals; n; n = n->next_visual) { ... }
CS>


CS>Я честно говоря затрудняюсь представить generic механизм интрузивных списков допускающий

CS>one element — N lists комбинации.

Самое простое:
range<node, &node::next> r_children(children);
range<node, &node::next_visual> r_visuals(visuals);

Generic — Boost.Intrusive.
До последнего не верил в пирамиду Лебедева.
Re[7]: lists must go?
От: Klapaucius  
Дата: 26.07.10 11:33
Оценка:
Здравствуйте, tripol, Вы писали:

FR>>В NET указатели есть.

T>В "unsafe code" правда.

А где указатели есть в safe code?
... << RSDN@Home 1.2.0 alpha 4 rev. 1446>>
'You may call it "nonsense" if you like, but I'VE heard nonsense, compared with which that would be as sensible as a dictionary!' (c) Lewis Carroll
Re[8]: lists must go?
От: tripol  
Дата: 26.07.10 12:04
Оценка:
Здравствуйте, Klapaucius, Вы писали:

K>Здравствуйте, tripol, Вы писали:


FR>>>В NET указатели есть.

T>>В "unsafe code" правда.

K>А где указатели есть в safe code?


http://msdn.microsoft.com/en-us/library/t2yzs44b.aspx
Re[8]: lists must go?
От: tripol  
Дата: 26.07.10 12:11
Оценка:
Здравствуйте, Klapaucius, Вы писали:

K>Здравствуйте, tripol, Вы писали:


FR>>>В NET указатели есть.

T>>В "unsafe code" правда.

K>А где указатели есть в safe code?


Малость не понял вопрос.
Хрен его знает. В C++ понятия safe code нет, и оно ему не нужно.
Re[8]: lists must go?
От: FR  
Дата: 26.07.10 12:15
Оценка:
Здравствуйте, Klapaucius, Вы писали:


K>А где указатели есть в safe code?


В ATS

http://www.church-project.org/seminar-reading-group/documents/Safe1.ppt
http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.59.5572
Re[8]: lists must go?
От: VladD2 Российская Империя www.nemerle.org
Дата: 26.07.10 21:16
Оценка:
Здравствуйте, Klapaucius, Вы писали:

FR>>>В NET указатели есть.

T>>В "unsafe code" правда.

K>А где указатели есть в safe code?


В обероне
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: lists must go?
От: VladD2 Российская Империя www.nemerle.org
Дата: 26.07.10 21:19
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>То что список как структура данных имеет свои уникальные свойства — понятно и никем не оспаривается.

CS>Конечно же есть *алгоритмы* для которых требуются такие уникальные свойства.
CS>Проблема в том что неинтрузивные списки как коллекции не эффективны. А с интрузивными списками концепция итераторов как-то не вяжется.
CS>Тогда вся концепция итераторов как обобщения выглядит весьма ограниченной — фактически iterators эффективны только для векторов.

Ну, так может дело не в списках, а в iterators С++?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: lists must go?
От: VladD2 Российская Империя www.nemerle.org
Дата: 26.07.10 21:23
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>А что можно предложить взамен ?


Более простые итераторы которые позволяют только перебрать элементы по порядку. Как я понимаю аналогичную фичу в В назвали диапазонами. А в дотнете она известна под идиотским императивным (но тем не менее вполне приемлемым) интерфейсом IEnumerabl<T>.

I>Итератор это всего лишь отделение обхода от структуры.


Итераторы С++ излишне переусложнены.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: lists must go?
От: tripol  
Дата: 26.07.10 21:32
Оценка: +1 :)
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, Ikemefula, Вы писали:


I>>А что можно предложить взамен ?


VD>Более простые итераторы которые позволяют только перебрать элементы по порядку. Как я понимаю аналогичную фичу в В назвали диапазонами. А в дотнете она известна под идиотским императивным (но тем не менее вполне приемлемым) интерфейсом IEnumerabl<T>.


I>>Итератор это всего лишь отделение обхода от структуры.


VD>Итераторы С++ излишне переусложнены.


Для пользователя идентично работе с указателями. Для Random итератора
доступны все операторы, которые применимы к указателю, в том числе
адресная арифметика. Для Forward итератора: ++, * и еще может какие.
Что бы этого достичь, конечно нужно больше кода.
Не вижу сложности в их использовании.
Re[9]: lists must go?
От: CreatorCray  
Дата: 27.07.10 08:50
Оценка:
Здравствуйте, tripol, Вы писали:

K>>А где указатели есть в safe code?

T>http://msdn.microsoft.com/en-us/library/t2yzs44b.aspx
Статья там называется "Unsafe Code and Pointers (C# Programming Guide)"
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[10]: lists must go?
От: tripol  
Дата: 27.07.10 09:06
Оценка:
Здравствуйте, CreatorCray, Вы писали:

CC>Здравствуйте, tripol, Вы писали:


K>>>А где указатели есть в safe code?

T>>http://msdn.microsoft.com/en-us/library/t2yzs44b.aspx
CC>Статья там называется "Unsafe Code and Pointers (C# Programming Guide)"

малость ошибся...
Re[2]: Маленькое уточнение
От: minorlogic Украина  
Дата: 31.07.10 10:17
Оценка:
Тогда я вдвойне не понимаю где вы видите неэфективность ? Можно просто , одним предложением ?
... << RSDN@Home 1.2.0 alpha 4 rev. 1237>>
Ищу работу, 3D, SLAM, computer graphics/vision.
Re[5]: lists must go?
От: Шахтер Интернет  
Дата: 04.08.10 20:44
Оценка:
Здравствуйте, 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 кратный перерасход памяти в худшем случае. Т.е. быстродействие покупается ценой расхода памяти.
В XXI век с CCore.
Копай Нео, копай -- летать научишься. © Matrix. Парадоксы
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.