Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вектор векторов, vector<vector<>> vs. vector<vector*<>> 
:(
    Опции темы
mr.DUDA
Дата 23.10.2006, 10:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 25
Всего: 232



Цитата(Daevaorn @  23.10.2006,  09:25 Найти цитируемый пост)
Это в какой?

Visual Studio N \ VC \ include \ vector

З.Ы. а что, разные бывают что ли ?  smile 


--------------------
user posted image
PM MAIL WWW   Вверх
JackYF
Дата 23.10.2006, 15:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



Насколько я читал, STL по определению реализует семантику значений, а не указателей. Поэтому если я копирую вектор, то мне же нужно скопировать значения из вектора, а не указатели на них!

Это, по-моему, описано в стандарте. В этом случае мелкомягкие .... <ваша фантазия>  smile 

Но я себе это плохо представляю...


Цитата(mr.DUDA @  23.10.2006,  09:13 Найти цитируемый пост)
В мелкомягкой реализации вектор содержит массив указателей на объекты, а не сами объекты. Поэтому алгоритм copy всего лишь скопирует N указателей при расширении массива (когда capacity не хватает).


mr.DUDA, ты уверен в этом?



--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
Void
Дата 23.10.2006, 16:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 40
Всего: 173



Цитата(Djuffin @  23.10.2006,  03:09 Найти цитируемый пост)
0. Когда имеешь дело с STL надо хорошо обдумывать каждую строку кода.
1. Я отстал от современных реализаций STL.
2. На ROTFL мое замечание не тянет.

+++
Погорячился smile


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
Daevaorn
Дата 23.10.2006, 17:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2155
Регистрация: 29.11.2004
Где: Москва

Репутация: 51
Всего: 70



Цитата(mr.DUDA @  23.10.2006,  11:18 Найти цитируемый пост)
Visual Studio N \ VC \ include \ vector

З.Ы. а что, разные бывают что ли ?    

Представь себе да.
Цитата(JackYF @  23.10.2006,  16:49 Найти цитируемый пост)
Это, по-моему, описано в стандарте. В этом случае мелкомягкие .... <ваша фантазия>   

Согласен на все 100% smile
PM MAIL WWW   Вверх
mr.DUDA
Дата 23.10.2006, 19:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 25
Всего: 232



Цитата(JackYF @  23.10.2006,  15:49 Найти цитируемый пост)
mr.DUDA, ты уверен в этом?

Насколько я смог понять, да. 
Значения лежат в классе-обёртке _Alloc, которая в свою очередь лежит в векторе. Если я не прав, ногами не пинайте, я смотрю что тут сишники собрались хардкорные.

Цитата(Daevaorn @  23.10.2006,  17:54 Найти цитируемый пост)
Представь себе да.

Хм, пример ?


--------------------
user posted image
PM MAIL WWW   Вверх
JackYF
Дата 23.10.2006, 19:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



Во-первых, _Alloc зависит от реализации.
У него даже не факт, что имя такое...

Во-вторых, контейнеры STL реализуют семантику значений, и по сему указатели там хранится в принципе не могут. Кроме того, для контейнера std::vector гарантируется, что элементы будут лежать рядом, и к элементам вектора можно обращаться как к обычному массиву.

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

Если нужно хранить указатели на элементы - пожалуйста, храните объекты T*, кто запрещает?..

Примеры реализаций:
STLport
Dinkumware Standart C++ Library
Microsoft - ...
GNU - ...

Это навскидку, а есть еще и другие...


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
Daevaorn
Дата 23.10.2006, 19:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2155
Регистрация: 29.11.2004
Где: Москва

Репутация: 51
Всего: 70



Цитата(mr.DUDA @  23.10.2006,  20:01 Найти цитируемый пост)
Насколько я смог понять, да. 

Не верно понял.
Цитата(mr.DUDA @  23.10.2006,  20:01 Найти цитируемый пост)
Значения лежат в классе-обёртке _Alloc, которая в свою очередь лежит в векторе

И какой ты вывод сделал?
Цитата(mr.DUDA @  23.10.2006,  20:01 Найти цитируемый пост)
Хм, пример ? 

У каждой версии студии своя реализия. База общая, это реализация от Dinkware, но от версии к версии отличия очень существенны.

PM MAIL WWW   Вверх
mr.DUDA
Дата 24.10.2006, 09:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 25
Всего: 232



Цитата(Daevaorn @  23.10.2006,  19:21 Найти цитируемый пост)
Не верно понял.

Вполне возможно

Цитата(Daevaorn @  23.10.2006,  19:21 Найти цитируемый пост)
И какой ты вывод сделал?

Неверный вывод о том, что обёртка содержит указатель, который и копируется в copy constructor

Цитата(Daevaorn @  23.10.2006,  19:21 Найти цитируемый пост)
У каждой версии студии своя реализия. База общая, это реализация от Dinkware, но от версии к версии отличия очень существенны.

+1
маньяк !  smile 


--------------------
user posted image
PM MAIL WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0531 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.