Автор Тема: C++ Представление вектора в памяти PC  (Прочитано 4458 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Педусаар

  • Пользователь
  • **
  • Сообщений: 64
    • Просмотр профиля
Как vector<int> ABC; и vector<vector<int>> ABC; создаются в памяти компьютера ?
Как можно изобразить добавление элемента в середину вектора на оперативной памяти пк ?
Полезные обозначения:
∫ ¼ ½ ¾ ⅓ ⅔ ⅛ ⅜ ⅝ ⅞ ² ³ ± ~ ‰ ∞ √ ∑ ∆ ℮ ∩ ≡ ≤ ≥ ≈ ∩

Оффлайн InfStudent

  • Модератор
  • *****
  • Сообщений: 1356
  • Куба любовь моя))
    • Просмотр профиля
Re: C++ Представление вектора в памяти PC
« Ответ #1 : 17 Июня 2010, 20:29:16 »
Ну это по моему часть STL. Является динамической структурой данных(О-о великий ужас отладки))И я так понимаю в своем представлении в PC опирается на одно или двусвязный список   
Прежде чем задавать вопрос в раздел по программированию повтори теорию и посмотри FAQ! Просьба не кидайте задания в ЛС и не надо мне писать: "посмотри мою задачу!!!" Я смотрю все задачи в разделе когда на форуме
Учтите что подобные ЛС будут оставлены без внимания!
УКАЗЫВАЙТЕ ЯЗЫК ПРОГРАММИРОВАНИЯ НА КОТОРОМ ДОЛЖНА БЫТЬ РЕШЕНА ЗАДАЧА
Вам в помощь:
∫ ¼ ½ ¾ ⅓ ⅔ ⅛ ⅜ ⅝ ⅞ ² ³ ± ~ ‰ ∞ √ ∑ ∆ ℮ ∩ ≡ ≤ ≥ ≈ ∩

Оффлайн InfStudent

  • Модератор
  • *****
  • Сообщений: 1356
  • Куба любовь моя))
    • Просмотр профиля
Re: C++ Представление вектора в памяти PC
« Ответ #2 : 17 Июня 2010, 20:36:32 »
Vector containers are implemented as dynamic arrays; Just as regular arrays, vector containers have their elements stored in contiguous storage locations, which means that their elements can be accessed not only using iterators but also using offsets on regular pointers to elements.
Векторы это контейнер реализованный как динамический массив, так же как статический располагает свои элементы в одной локации памяти, что означает что элементы векторов доступны не только при помощи итераторов но и по указателю и смещению     
Прежде чем задавать вопрос в раздел по программированию повтори теорию и посмотри FAQ! Просьба не кидайте задания в ЛС и не надо мне писать: "посмотри мою задачу!!!" Я смотрю все задачи в разделе когда на форуме
Учтите что подобные ЛС будут оставлены без внимания!
УКАЗЫВАЙТЕ ЯЗЫК ПРОГРАММИРОВАНИЯ НА КОТОРОМ ДОЛЖНА БЫТЬ РЕШЕНА ЗАДАЧА
Вам в помощь:
∫ ¼ ½ ¾ ⅓ ⅔ ⅛ ⅜ ⅝ ⅞ ² ³ ± ~ ‰ ∞ √ ∑ ∆ ℮ ∩ ≡ ≤ ≥ ≈ ∩

Оффлайн InfStudent

  • Модератор
  • *****
  • Сообщений: 1356
  • Куба любовь моя))
    • Просмотр профиля
Re: C++ Представление вектора в памяти PC
« Ответ #3 : 17 Июня 2010, 20:37:15 »
Перевод мой)
А источник ссылка
Прежде чем задавать вопрос в раздел по программированию повтори теорию и посмотри FAQ! Просьба не кидайте задания в ЛС и не надо мне писать: "посмотри мою задачу!!!" Я смотрю все задачи в разделе когда на форуме
Учтите что подобные ЛС будут оставлены без внимания!
УКАЗЫВАЙТЕ ЯЗЫК ПРОГРАММИРОВАНИЯ НА КОТОРОМ ДОЛЖНА БЫТЬ РЕШЕНА ЗАДАЧА
Вам в помощь:
∫ ¼ ½ ¾ ⅓ ⅔ ⅛ ⅜ ⅝ ⅞ ² ³ ± ~ ‰ ∞ √ ∑ ∆ ℮ ∩ ≡ ≤ ≥ ≈ ∩

Оффлайн Педусаар

  • Пользователь
  • **
  • Сообщений: 64
    • Просмотр профиля
Re: C++ Представление вектора в памяти PC
« Ответ #4 : 19 Июня 2010, 12:09:39 »
А на ленте оперативной памяти вставка в вектор элемента как выглядит ? Или как он на ней инициализируется для начала? Ели представлять память в виде ячеек.

Это функция библиотеки vector, добавляющая элемент, например в операции push_back используется:

void _Insert_n(const_iterator _Where,
      size_type _Count, const _Ty& _Val)
      {   // insert _Count * _Val at _Where

Вот тут в памяти похоже происходит добавление, только не понимаю что конкретно на ячейках делается:
 
_TRY_BEGIN
         _Ptr = _Umove(_Myfirst, _VEC_ITER_BASE(_Where),
            _Newvec);   // copy prefix
         _Ptr = _Ufill(_Ptr, _Count, _Val);   // add new stuff
         _Umove(_VEC_ITER_BASE(_Where), _Mylast, _Ptr);   // copy suffix
         _CATCH_ALL
         _Destroy(_Newvec, _Ptr);
         this->_Alval.deallocate(_Newvec, _Capacity);
         _RERAISE;
         _CATCH_END
Полезные обозначения:
∫ ¼ ½ ¾ ⅓ ⅔ ⅛ ⅜ ⅝ ⅞ ² ³ ± ~ ‰ ∞ √ ∑ ∆ ℮ ∩ ≡ ≤ ≥ ≈ ∩

Оффлайн InfStudent

  • Модератор
  • *****
  • Сообщений: 1356
  • Куба любовь моя))
    • Просмотр профиля
Re: C++ Представление вектора в памяти PC
« Ответ #5 : 20 Июня 2010, 21:12:59 »
Ну почитайте про стек ссылка Так как операция push говорит именно об этом(использовании стековых структур)
Прежде чем задавать вопрос в раздел по программированию повтори теорию и посмотри FAQ! Просьба не кидайте задания в ЛС и не надо мне писать: "посмотри мою задачу!!!" Я смотрю все задачи в разделе когда на форуме
Учтите что подобные ЛС будут оставлены без внимания!
УКАЗЫВАЙТЕ ЯЗЫК ПРОГРАММИРОВАНИЯ НА КОТОРОМ ДОЛЖНА БЫТЬ РЕШЕНА ЗАДАЧА
Вам в помощь:
∫ ¼ ½ ¾ ⅓ ⅔ ⅛ ⅜ ⅝ ⅞ ² ³ ± ~ ‰ ∞ √ ∑ ∆ ℮ ∩ ≡ ≤ ≥ ≈ ∩

 

Задача на Pascal, записать новые вектора

Автор Balla

Ответов: 1
Просмотров: 4046
Последний ответ 24 Декабря 2010, 09:45:34
от @len@_k
ДЕЛФИ, ВЕКТОРА

Автор Эля_informatichka

Ответов: 1
Просмотров: 4519
Последний ответ 06 Октября 2010, 21:40:20
от InfStudent