Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.07.2015, 17:03   #11
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Не обязательно...
Вообще такие вопросы может рассудить дизассемблер IDE, которой компилируешь.
Бывает и указатель на объект в стеке.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 30.07.2015, 18:34   #12
Krasiosoft
Форумчанин
 
Аватар для Krasiosoft
 
Регистрация: 01.06.2015
Сообщений: 497
По умолчанию

Цитата:
Сообщение от RAFA91 Посмотреть сообщение
вектор сам по себе хранит обьекты в динамике
Скорее всего, он хранит объекты цельным массивом, а не для каждого выделяет свой кусочек памяти.
Цитата:
Сообщение от RAFA91 Посмотреть сообщение
что идет в стек?
Это можете сами посмотреть:

Код:
#include <iostream>
#include <vector>

using namespace std;

int main ()
{
    vector<unsigned char> vecBytes;
    vector<unsigned char> *vecBytesPtr;
    vector<unsigned long> vecDWords;
    vector<unsigned long> *vecDWordsPtr;

    cout << sizeof( vecBytes ) << endl;     // size = 12
    cout << sizeof( vecBytesPtr ) << endl;  // size = 4

    cout << sizeof( vecDWords ) << endl;     // size = 12
    cout << sizeof( vecDWordsPtr ) << endl;  // size = 4

    system("pause");

    return 0;
}
Если помог, буду очень благодарен за Ваш отзыв (весы в левой нижней части сообщения).
Krasiosoft вне форума Ответить с цитированием
Старый 31.07.2015, 13:41   #13
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию

Почему при добавлении нового обьекта в vector происходит перезапись

существующих в векторе обьектов в новые области памяти ?
RAFA91 вне форума Ответить с цитированием
Старый 31.07.2015, 14:42   #14
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Потому что вектор это не список, а динамический массив )
Ты когда в массив чет под хвост ему дотыкаешь тебе разве не приходится массив пересоздавать?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 31.07.2015, 14:54   #15
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Ты когда в массив чет под хвост ему дотыкаешь тебе разве не приходится массив пересоздавать?
нуууу так это только с динамическим массивом так можно.
RAFA91 вне форума Ответить с цитированием
Старый 31.07.2015, 15:50   #16
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну дык вот вектор так и делает )
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 31.07.2015, 17:06   #17
Krasiosoft
Форумчанин
 
Аватар для Krasiosoft
 
Регистрация: 01.06.2015
Сообщений: 497
По умолчанию

vector хранит объекты цельным массивом:
Код:
    vector<unsigned char> vec;

    vec.push_back(1);
    vec.push_back(2);
    vec.push_back(3);
    vec.push_back(4);
    vec.push_back(5);
    vec.push_back(6);

    unsigned char *vecArray=vec.data();

    for(int i=0;i<6;i++){
        cout << (int)vecArray[i]<< " ";
    }
Как он выделяет память, это уже другой вопрос, но если ему будет не хватать памяти, то он будет выделять новую память нужного размера, и копировать туда все, что было в старой памяти, а старую освобождать.
Если помог, буду очень благодарен за Ваш отзыв (весы в левой нижней части сообщения).
Krasiosoft вне форума Ответить с цитированием
Старый 31.07.2015, 18:40   #18
Perchik71
С++, Delphi
Форумчанин
 
Аватар для Perchik71
 
Регистрация: 24.11.2012
Сообщений: 495
По умолчанию

список
говно список, но всё же
очередь
динамический массив
Если помог, тут весы есть , Вам не сложно, а мне приятно.
Perchik71 вне форума Ответить с цитированием
Старый 02.08.2015, 14:40   #19
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию

Цитата:
Сообщение от Krasiosoft Посмотреть сообщение
vector хранит объекты цельным массивом:
а зачем Вы перед vecArray[i] поставили (int) ?

vecArray[i] возвратит обьект типа int
RAFA91 вне форума Ответить с цитированием
Старый 02.08.2015, 15:32   #20
Krasiosoft
Форумчанин
 
Аватар для Krasiosoft
 
Регистрация: 01.06.2015
Сообщений: 497
По умолчанию

Чтоб cout выводил значение вектора как int, а не unsigned char.

Можете убрать и посмотреть, что будет выводить cout.
Если помог, буду очень благодарен за Ваш отзыв (весы в левой нижней части сообщения).
Krasiosoft вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
vector c++ Alendorff Помощь студентам 3 14.04.2013 14:52
C++ Boost - vector<path> to vector<string> frommars Общие вопросы C/C++ 0 04.02.2013 21:19
<vector> dcPEOP Общие вопросы C/C++ 2 26.01.2012 11:28
#include <vector> GBAXA Visual C++ 12 15.08.2010 11:25
vector NiCola999 Помощь студентам 5 26.02.2010 08:37