powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Динамический массив
11 сообщений из 61, страница 3 из 3
Динамический массив
    #34356093
ErV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нашел код текущего стандарта (http://en.wikipedia.org/wiki/C%2B%2B):
[quote wiki]
The C++ programming language standard was ratified in 1998 as ISO/IEC 14882:1998, the current version of which is the 2003 version, ISO/IEC 14882:2003. A new version of the standard (known informally as C++0x) is being developed.
[/quote]
Возможно, там же есть и ссылки (просто не рыл)
...
Рейтинг: 0 / 0
Динамический массив
    #34356094
Фотография Анатолий Широков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Динамический массив
    #34356109
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akh пишет:

> Считаю, что подобное использование не является идеологически верным.
> Т.к. есть специальный интерфейс, который предоствляет доступ к
> определенным элементам контейнера, а не ко всему контейнеру в целом. Так
> как область применения контейнера не влючает использование его элементов
> в целом, то использование не по назначению, не может являться корректным.

Да как ты все не допрешь-то, vector именно такое использование всегда
и подразумевал. Именно как КОНТЕЙНЕРА В ЦЕЛОМ !!
О чем тебе и говорят уже долго.

Если завел нужное тебе capacity заранее, и не вызываешь функций,
которые могут привести к реаллокации памяти, а они строго оговорены,
то можешь использовать нутро vector как С-шний массив.
Нпример, можно выполнить сортировку вектора С-шным qsort().

Если в типе T есть выравнивание, то оно ВХОДИТ в sizeof(T) и
все хорошо, и в С, и в С++.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Динамический массив
    #34356155
EtLIN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Анатолий Широков абсолютно прав.
Не понимаю зачем вообще спорить, только ради спора..
...
Рейтинг: 0 / 0
Динамический массив
    #34356601
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ладно. Я пытался объяснить свою точку зрения, походу не вышло. Объснять другими словами, вижу нет смысла. Раз в данном случае это теоритический вопрос, думаю, можно на этом остановиться.
...
Рейтинг: 0 / 0
Динамический массив
    #34356602
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EtLINАнатолий Широков абсолютно прав.
Не понимаю зачем вообще спорить, только ради спора..

Не имею привычки
...
Рейтинг: 0 / 0
Динамический массив
    #34356610
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Анатолий ШироковЯ считаю, что вы неверно трактуете термин contiguously из приведенной цитаты
Код: plaintext
1.
2.
The elements of a vector are stored contiguously, meaning that if v is a vector<T, Allocator>
where T is some type other than bool, then it obeys the identity &v[n] == &v[0] + n for 
all 0 <= n < v.size().
и заменяете его на "друг за другом", хотя истинный смысл его "рядом"

Далее, если даже не обращать внимание на это замечание, то v\[i\] согласно стандарту, определенный как:

Код: plaintext
1.
reference operator[](size_type n);
const_reference operator[](size_type n) const;

возвращает reference, который определен как

Код: plaintext
typedef typename Allocator::reference reference;

который, согласно стандарту, определен как

Код: plaintext
1.
X::reference == T&

Следовательно в приведенной цитате v[0] может означать лишь ссылку на 0 элемент типа T, а v[n] - ссылку на n-ый элемент типа T. Следовательно, sizeof(v ) == sizeof(v[i+1]) == sizeof(T) и значит С в вашем посте всегда будет равно 0:

С = sizeof(v[i+1]) - sizeof(v) = 0

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


Тут я оканчательно понимаю, что мы друг друга не слышим. И нет смысла этого добиваться.
...
Рейтинг: 0 / 0
Динамический массив
    #34356641
onstat-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Анатолий ШироковЗдесь достаточно того, что какие бы это преобразования ни были верно следующее:

&v[n] = &v[0] + n = ((const char *)&v[0]) + n*sizeof(T);

поскольку именно так определяется оператор + применительно к указателю на тип, где v[0] и v[n] - ссылки на T.


Такую формулировку можно рассматривать как виртуално непрерывное простраство,
что абсолютно не значит что:

Анатолий Широков
Только для std::vector есть гарантия непрерывного размещения элементов в памяти


Думаю на этом можно закончить обсуждение, так как в стандарте это однозначно не определено.
...
Рейтинг: 0 / 0
Динамический массив
    #34357017
Фотография Анатолий Широков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор
Такую формулировку можно рассматривать как виртуално непрерывное простраство,
что абсолютно не значит что:


Только не надо придумывать свою собственную терминологию. Непрерывность гарантируется стандартом и я уже устал это доказывать:

&v[n] == &v[0] + n for
all 0 <= n < v.size().

Ваши доводы относительно неоднозначности стандарта в этом вопросе не выдерживают никакой критики.
...
Рейтинг: 0 / 0
Динамический массив
    #34357269
onstat-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Анатолий Широков
Непрерывность гарантируется стандартом и я уже устал это доказывать:


моежете уже не доказывать.

Вы упустили :
автор
гарантия непрерывного размещения элементов в памяти


Будьте последовательны это очень важно в контесте разговора.
Доказывать нужно было только эту фразу.


Анатолий Широков

&v[n] == &v[0] + n for
all 0 <= n < v.size().



С этим я спорить ненамерен, потому, что тут все правильно.

Анатолий Широков

Ваши доводы относительно неоднозначности стандарта в этом вопросе не выдерживают никакой критики.


Я не утверждал, что он неоднозначен.
И критики тоже невидел.
...
Рейтинг: 0 / 0
Динамический массив
    #34357448
Фотография Анатолий Широков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 onstat-

авторДоказывать нужно было только эту фразу.

гарантия непрерывного размещения элементов в памяти std::vector это и есть

&v[n] == &v[0] + n for
all 0 <= n < v.size().

То с чем вы уже и не спорите.

Все, извините, вы гоняете уже из пустого в порожнее. Ну как так можно?
...
Рейтинг: 0 / 0
11 сообщений из 61, страница 3 из 3
Форумы / C++ [игнор отключен] [закрыт для гостей] / Динамический массив
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]