Re: Массив с быстрой вставкой/удалением
От: Аноним  
Дата: 03.02.12 06:22
Оценка: +1
Здравствуйте, IgushevEdward, Вы писали:

IE>Я недавно сделал своё маленькое изобретение: структуру с произвольным доступом, скромно названную IgushArray, которая как массив имеет быструю константную операцию доступа, но операция вставки/удаления занимает всего лишь O (N^1/2). Структура может рассматриваться как “быстрый массив” или “массив с быстрой операцией вставки”.


Скромное название вводит в заблуждение.
На самом деле это не массив в том виде, в котором это понимается в С++. Основной признак массива — это то, что ты можешь взять адрес одного элемента и получить доступ ко всем другим элементам посредством адресной арифметики.

Фактически у тебя получился гибрид std::list с std::vector'ом, причем достоинства и того, и другого слегка подрастерялись при слиянии.

IE>Подробное описание можно найти здесь http://igushev.ru/papers/igusharray/


Ну вот смотри: по сравнению с вектором твоя структура работает быстрее, это да. Но, к сожалению, вектор нельзя просто взять и заменить твоей структурой, потому что вектор (к примеру) можно использовать как буфер при вызове сишных или WinAPI-шных функций:

std::vector<char> buf(1000);
fgets( &buf[0], buf.size(), stdin );


Если заменить в таком коде вектор на твой эррей, программа упадет.

Таким образом, твоя структура не является аналогом массива — это скорее аналог стд::листа с возможностью рандомного доступа к элементам (и с более медленной вставкой-удалением).

IE>Прошу любые комментарии или отзывы (особенно если вы где-то это примените)!


А какие достоинства имеет твоя структура по сравнению с std::list, кроме рандомных итераторов?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.