Re[12]: std::map - n-й элемент массива
От: MaximE Великобритания  
Дата: 28.04.03 15:12
Оценка:
Здравствуйте, Дмитрий Наумов, Вы писали:

ДН>Здравствуйте, MaximE, Вы писали:


ME>>Почти согласен, но про O(n) поподробнее.


ДН> Может я криво выразился?... Человеку нужен доступ к элементу мапа по индексу, оно же operator[], как он его сделает? std::advance, ну или for(...) для особых извращенцев. Ну вот его то сложность и будет O(n), а с вектором имеем O(1)


А я, грешным делом, подумал, что O(n) — это map::insert
Re[10]: std::map - n-й элемент массива
От: Аноним  
Дата: 28.04.03 15:19
Оценка:
Здравствуйте, Михаил Можаев, Вы писали:

ММ>А так — map + vector в самый раз.


Только в общем случае — не map, а multimap.
Re[12]: std::map - n-й элемент массива
От: Дмитрий Наумов  
Дата: 28.04.03 15:28
Оценка:
Здравствуйте, MaximE, Вы писали:

ME>Осталось выяснить у автора зачем ему именно map.


Говорит, хочу, блин, и все...
... << RSDN@Home 1.0 beta 6a >>
Re[12]: std::map - n-й элемент массива
От: Аноним  
Дата: 28.04.03 15:48
Оценка:
Здравствуйте, MaximE, Вы писали:

ME>Осталось выяснить у автора зачем ему именно map.


Именно map мне не нужен.

Но если бы в map был оператор (функция)
позволяющая получить злемент массива по индексу
это бы подходило мне идеально.

Понимаете... контрол уже реализован через vector.

заменить vector на map было бы самым простым в отношении
трудоемкости (без изменения логики работы и добавления нового кода).

Только вот в map для const_iterator определен operator++().



typedef map<int, string> INT2STRING;
typedef map<int,string>::const_iterator CI;

INT2STRING mCountryList;
/*
    Init mCountryList
*/        

for(CI p=mCountryList.begin();p != mCountryList.end();++p)
{
    cout<<p->second.c_str()<<endl;
}



Вот и хотел узнать у знатоков в чем сложность реализайии
operator+()?

чтобы записать вот так:


    CI p=mCountryList.begin() + n;
    cout<<n<<"й элемент массива - "<<p->second.c_str()<<endl;


Где n — индекс массива
Re[13]: std::map - n-й элемент массива
От: MaximE Великобритания  
Дата: 28.04.03 17:42
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>Именно map мне не нужен.


А>Но если бы в map был оператор (функция)

А>позволяющая получить злемент массива по индексу
А>это бы подходило мне идеально.

Идеально для какой цели?

А>Понимаете... контрол уже реализован через vector.


Не понимаю. map не нужен, vector чем не устраивает?
Re[13]: std::map - n-й элемент массива
От: Дмитрий Наумов  
Дата: 29.04.03 06:10
Оценка:
Здравствуйте, <Аноним>, Вы писали:

АА>

А>Вот и хотел узнать у знатоков в чем сложность реализайии
А>operator+()?

А>чтобы записать вот так:


А>

А>
А>    CI p=mCountryList.begin() + n;
А>    cout<<n<<"й элемент массива - "<<p->second.c_str()<<endl;
А>


А>Где n — индекс массива


А"Сложность" в том, что это неэффективная операция.
... << RSDN@Home 1.0 beta 6a >>
Re[2]: std::map - n-й элемент массива
От: Кодт Россия  
Дата: 29.04.03 07:18
Оценка:
Здравствуйте, Bell, Вы писали:

B>
B>int n = ...;
B>std::map<int,std::string>::iterator it = mItems.begin();//it - неконстантный итератор
B>std::advance(it, n);
B>


B>Сложность — линейная. Вообще подобные операции плохо подходят для map — опиши подробнее, почему такая необходимость возникает.


Вообще, зная, что корневой элемент дерева — это серединный элемент множества, а размер множества хранится и известен, можно было бы за O(log N) добираться до любого элемента.
Но, поскольку дерево — это внутренняя реализация множества (и, следовательно, мапа), эти фокусы на высоком уровне не проходят.
(=^.^=) Neko ... << RSDN@Home 1.0 beta 6a >>
Перекуём баги на фичи!
Re[14]: std::map - n-й элемент массива
От: Аноним  
Дата: 29.04.03 07:22
Оценка:
Здравствуйте, MaximE, Вы писали:

ME>Не понимаю. map не нужен, vector чем не устраивает?


Все. Реализовываю через vector структур... =)

Спасибо всем за участие.
Re[15]: std::map - n-й элемент массива
От: Дмитрий Наумов  
Дата: 29.04.03 07:29
Оценка: :)
Здравствуйте, <Аноним>, Вы писали:

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


ME>>Не понимаю. map не нужен, vector чем не устраивает?


А>Все. Реализовываю через vector структур... =)


А>Спасибо всем за участие.


Ура! Наша взяла!
... << RSDN@Home 1.0 beta 6a >>
Re[3]: std::map - n-й элемент массива
От: Bell Россия  
Дата: 29.04.03 07:55
Оценка:
Здравствуйте, Кодт, Вы писали:

К>Вообще, зная, что корневой элемент дерева — это серединный элемент множества, а размер множества хранится и известен, можно было бы за O(log N) добираться до любого элемента.

По-моему это не справедливо для красно-черных деревьев (которые используются наиболее часто) — у них корневой элемент совсем не обязательно серединный.

К>Но, поскольку дерево — это внутренняя реализация множества (и, следовательно, мапа), эти фокусы на высоком уровне не проходят.


Да и не к чему это...
Любите книгу — источник знаний (с) М.Горький
Re[6]: :))
От: jazzer Россия Skype: enerjazzer
Дата: 29.04.03 08:21
Оценка: :))) :)
Здравствуйте, Дмитрий Наумов, Вы писали:

А>Именно это я и хочу реализовать в разрабатываемом мною ComboBox-е .

А>Я не использую ни MFC ни даже Win32. =)

ДН>А что же тогда?


— У меня жена родила!
— Мальчика?
— Нет.
— А кого???

:))
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.