|
|
|
Динамический массив
|
|||
|---|---|---|---|
|
#18+
Нашел код текущего стандарта (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] Возможно, там же есть и ссылки (просто не рыл) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2007, 20:14 |
|
||
|
Динамический массив
|
|||
|---|---|---|---|
|
#18+
Akh пишет: > Считаю, что подобное использование не является идеологически верным. > Т.к. есть специальный интерфейс, который предоствляет доступ к > определенным элементам контейнера, а не ко всему контейнеру в целом. Так > как область применения контейнера не влючает использование его элементов > в целом, то использование не по назначению, не может являться корректным. Да как ты все не допрешь-то, vector именно такое использование всегда и подразумевал. Именно как КОНТЕЙНЕРА В ЦЕЛОМ !! О чем тебе и говорят уже долго. Если завел нужное тебе capacity заранее, и не вызываешь функций, которые могут привести к реаллокации памяти, а они строго оговорены, то можешь использовать нутро vector как С-шний массив. Нпример, можно выполнить сортировку вектора С-шным qsort(). Если в типе T есть выравнивание, то оно ВХОДИТ в sizeof(T) и все хорошо, и в С, и в С++. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2007, 20:22 |
|
||
|
Динамический массив
|
|||
|---|---|---|---|
|
#18+
Анатолий Широков абсолютно прав. Не понимаю зачем вообще спорить, только ради спора.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2007, 21:22 |
|
||
|
Динамический массив
|
|||
|---|---|---|---|
|
#18+
Ладно. Я пытался объяснить свою точку зрения, походу не вышло. Объснять другими словами, вижу нет смысла. Раз в данном случае это теоритический вопрос, думаю, можно на этом остановиться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2007, 09:43 |
|
||
|
Динамический массив
|
|||
|---|---|---|---|
|
#18+
EtLINАнатолий Широков абсолютно прав. Не понимаю зачем вообще спорить, только ради спора.. Не имею привычки ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2007, 09:44 |
|
||
|
Динамический массив
|
|||
|---|---|---|---|
|
#18+
Анатолий ШироковЯ считаю, что вы неверно трактуете термин contiguously из приведенной цитаты Код: plaintext 1. 2. Далее, если даже не обращать внимание на это замечание, то v\[i\] согласно стандарту, определенный как: Код: plaintext 1. возвращает reference, который определен как Код: plaintext который, согласно стандарту, определен как Код: plaintext 1. Следовательно в приведенной цитате 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. Тут я оканчательно понимаю, что мы друг друга не слышим. И нет смысла этого добиваться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2007, 09:46 |
|
||
|
Динамический массив
|
|||
|---|---|---|---|
|
#18+
Анатолий ШироковЗдесь достаточно того, что какие бы это преобразования ни были верно следующее: &v[n] = &v[0] + n = ((const char *)&v[0]) + n*sizeof(T); поскольку именно так определяется оператор + применительно к указателю на тип, где v[0] и v[n] - ссылки на T. Такую формулировку можно рассматривать как виртуално непрерывное простраство, что абсолютно не значит что: Анатолий Широков Только для std::vector есть гарантия непрерывного размещения элементов в памяти Думаю на этом можно закончить обсуждение, так как в стандарте это однозначно не определено. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2007, 09:58 |
|
||
|
Динамический массив
|
|||
|---|---|---|---|
|
#18+
автор Такую формулировку можно рассматривать как виртуално непрерывное простраство, что абсолютно не значит что: Только не надо придумывать свою собственную терминологию. Непрерывность гарантируется стандартом и я уже устал это доказывать: &v[n] == &v[0] + n for all 0 <= n < v.size(). Ваши доводы относительно неоднозначности стандарта в этом вопросе не выдерживают никакой критики. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2007, 11:50 |
|
||
|
Динамический массив
|
|||
|---|---|---|---|
|
#18+
Анатолий Широков Непрерывность гарантируется стандартом и я уже устал это доказывать: моежете уже не доказывать. Вы упустили : автор гарантия непрерывного размещения элементов в памяти Будьте последовательны это очень важно в контесте разговора. Доказывать нужно было только эту фразу. Анатолий Широков &v[n] == &v[0] + n for all 0 <= n < v.size(). С этим я спорить ненамерен, потому, что тут все правильно. Анатолий Широков Ваши доводы относительно неоднозначности стандарта в этом вопросе не выдерживают никакой критики. Я не утверждал, что он неоднозначен. И критики тоже невидел. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2007, 12:41 |
|
||
|
Динамический массив
|
|||
|---|---|---|---|
|
#18+
2 onstat- авторДоказывать нужно было только эту фразу. гарантия непрерывного размещения элементов в памяти std::vector это и есть &v[n] == &v[0] + n for all 0 <= n < v.size(). То с чем вы уже и не спорите. Все, извините, вы гоняете уже из пустого в порожнее. Ну как так можно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2007, 13:22 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=34356094&tid=2029363]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
182ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
69ms |
get tp. blocked users: |
1ms |
| others: | 235ms |
| total: | 527ms |

| 0 / 0 |
