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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как создать переопределяемый динамический массив 
:(
    Опции темы
Zero
Дата 7.10.2005, 23:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2169
Регистрация: 23.10.2004
Где: Россия, г. Рязань

Репутация: нет
Всего: 24



Цитата(En_t_end @ 7.10.2005, 12:47)
ЗЫ товарищ Zero, если вы будете продолжать "хаять" С++

Зи товарищ En_t_end, вы не так поняли... я не хаю С++, а просто мои ожидания о нём немного меньше чем я себе представлял...
Тут трудно как то и запутанно он воспринимается...
Вот в делфи там я до некотрых функций дошол методом тыка, не читая литературы, а тут глюки начались с того, когда мне сказали что есть функция ShowMessage, но я как ради практики не старался её записать с учётом регистров, и пол часа до меня доходило что здесь, т.е. С++ чувствительный к регистру...
Учить начал, чисто из-за того что по ООП курсачи заставили делать именно на С++, а так на Делфи то я бы его часа за 3 сделал...

Цитата(Neitron @ 7.10.2005, 09:39)
Вектор и есть массив.!!!!

Неверно... Я сегодня прочитал главу про векторы, и понял их отличия:
размер массива можно определять один раз, но удобен массив тем что в пошаговом режиме его можно просматривать.
Размер вектора можно изменять динамически на любом шаге выполнения программы, но недостаток который я заметил, то что в пошаговом режиме он не показывает свои значения, хотя в документации, написано что работать с ним можно как с обычным массивом (но это наверно имеется ввиду чисто использование операторов, а не всё остальное)
PM MAIL ICQ   Вверх
bel_nikita
Дата 8.10.2005, 00:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2304
Регистрация: 12.10.2003
Где: Поезд №21/22 ( ст . Прага )

Репутация: 21
Всего: 47



Zero
Цитата
Неверно... Я сегодня прочитал главу про векторы, и понял их отличия:
размер массива можно определять один раз, но удобен массив тем что в пошаговом режиме его можно просматривать.
Размер вектора можно изменять динамически на любом шаге выполнения программы, но недостаток который я заметил, то что в пошаговом режиме он не показывает свои значения, хотя в документации, написано что работать с ним можно как с обычным массивом (но это наверно имеется ввиду чисто использование операторов, а не всё остальное)

для векторов все тоже самое, что и для динамического массива

для векторов истино: &v[i] == &v[0] + i


--------------------
user posted image — регистрация доменов от 150 руб.
PM MAIL WWW ICQ   Вверх
Earnest
Дата 8.10.2005, 16:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

Репутация: 53
Всего: 183



Цитата(Zero @ 7.10.2005, 23:34)
то что в пошаговом режиме он не показывает свои значения,

Просто его надо как следует попросить. Формат просьбы зависит от используемой библиотеки.


--------------------
...
PM   Вверх
Void
Дата 8.10.2005, 17:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


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

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



Цитата(Zero @ 8.10.2005, 01:34)
Неверно... Я сегодня прочитал главу про векторы, и понял их отличия:
размер массива можно определять один раз, но удобен массив тем что в пошаговом режиме его можно просматривать.
Размер вектора можно изменять динамически на любом шаге выполнения программы, но недостаток который я заметил, то что в пошаговом режиме он не показывает свои значения, хотя в документации, написано что работать с ним можно как с обычным массивом (но это наверно имеется ввиду чисто использование операторов, а не всё остальное)

Очень хотелось бы знать, что ты читаешь, раз там именно на такие, пардон, "различия", упор сделан.
Я так и не понял, что это за вредные векторы такие, значения не показывают smile Если имеются в виду визуальные отладчики. то дебаггеры VC++ 7.1 и 8.0 (последний - просто smile) прекрасно умеют с ними работать.


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


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2169
Регистрация: 23.10.2004
Где: Россия, г. Рязань

Репутация: нет
Всего: 24



Цитата(Void @ 8.10.2005, 17:08)
Я так и не понял, что это за вредные векторы такие, значения не показывают

Пример говориш, нужен smile ... Вот держи, вчера на нём икспириминтировал:
Код

vector<int> s(3);
  s[0]=0;
  strcpy(st,IntToStr(s[0]).c_str());  //с помощью этих штук пришлось убеждатся что присваивание работает
  s[1]=1;
  strcpy(st,IntToStr(s[1]).c_str());

Добавлено @ 19:09
В Watch List заношу вот такое значение:
Код

s[0]

И там в вотч листе при выполнении этой команды показывается такое сообщение: smile
Код

s[0]: E2382 Side effects are not allowed


Это сообщение отредактировал(а) Zero - 8.10.2005, 19:06
PM MAIL ICQ   Вверх
Void
Дата 8.10.2005, 19:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


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

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



Zero
М-м... ну что ж, правда ваша, напрямую добавить в Watch List такое выражение не получается. Правда, лично я никогда не испытывал в этом необходимости, Autos в VC++ мои потребности, как правило, покрывали с лихвой.


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


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2169
Регистрация: 23.10.2004
Где: Россия, г. Рязань

Репутация: нет
Всего: 24



Вот и я то про что...
PM MAIL ICQ   Вверх
Earnest
Дата 9.10.2005, 11:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

Репутация: 53
Всего: 183



Zero
Если у тебя STL-port 5.0, то содержимое вектора посмотреть в Watch можно так:
// 10 первых элементов
MyVec._M_impl._M_start,10
// число элементов
MyVec._M_impl._M_finish - MyVec._M_impl._M_start
и т.д.

Если STL-port предыдущих версий или не port, то все то же самое, но без _M_impl. Хотя возможны варианты, в зависимости от реализации STL. Это легко посмотреть - в отладчике раскрой переменную MyVec и посмотри, что внутри.

Со списками и прочими мэпами хуже, в некоторых реализациях можно заглянуть внутрь узла, в других - видны только базовые члены.
Но, как уже сказал Void, в этом редко бывает необходимость. В конце концов, выведи отладочную информацию с помощью OutputDebugString (наверняка и в Борланде есть какие-нибудь команды-оболочки)


--------------------
...
PM   Вверх
Zero
Дата 9.10.2005, 13:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2169
Регистрация: 23.10.2004
Где: Россия, г. Рязань

Репутация: нет
Всего: 24



Цитата(Earnest @ 9.10.2005, 11:49)
Но, как уже сказал Void, в этом редко бывает необходимость.
Хмм... smile , у тех кто с этим не работает, у тех редко. А если я с этим работаю, то мне нужна.
Цитата(Earnest @ 9.10.2005, 11:49)
В конце концов, выведи отладочную информацию с помощью


Цитата(Zero @ 8.10.2005, 19:05)
vector<int> s(3);
  s[0]=0;
  strcpy(st,IntToStr(s[0]).c_str());  //с помощью этих штук пришлось убеждатся что присваивание работает


PM MAIL ICQ   Вверх
Void
Дата 9.10.2005, 15:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


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

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



Цитата(Zero @ 9.10.2005, 15:02)
Хмм... smile , у тех кто с этим не работает, у тех редко. А если я с этим работаю, то мне нужна.

Вектора использую направо и налево. Но чтобы приходилось контролировать в процессе отладки какой-то конкретный элемент smile
Цитата(Zero @ 9.10.2005, 15:02)
//с помощью этих штук пришлось убеждатся что присваивание работает

Настолько сомневаешься в способностях авторов реализации STL? smile


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


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2169
Регистрация: 23.10.2004
Где: Россия, г. Рязань

Репутация: нет
Всего: 24



Цитата(Void @ 9.10.2005, 15:34)
Настолько сомневаешься в способностях авторов реализации STL?
Да нет, говорю же с С++ только неделю сижу. smile smile
PM MAIL ICQ   Вверх
Earnest
Дата 10.10.2005, 17:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

Репутация: 53
Всего: 183



Цитата(Zero @ 9.10.2005, 13:02)

vector<int> s(3);
  s[0]=0;
  strcpy(st,IntToStr(s[0]).c_str());  //с помощью этих штук пришлось убеждатся что присваивание работает


Проверка присваивания - это круто. Однако бывают менее тривиальные случаи, когда неплохо бы заглянуть внутрь.
Я, собственно, имела в виду что-то вроде
Код

TRACE(_T("v[0]=%d\n"),v[0]);

Все это выводиться на панель output в процессе выполнения программы.
Но это VC (MFC), а у Борланда могут быть другие слова. Ищи в хелпе про отладочную печать.



--------------------
...
PM   Вверх
ZeroDivide
Дата 26.10.2005, 09:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 14.8.2005

Репутация: 0
Всего: 1



С++ [censored34! Пожалуйста, соблюдайте элементарные правила приличия при общении на форуме], нахрен его smile
Даёшь Delphi и Free Pascal!
PM MAIL   Вверх
Neitron
Дата 26.10.2005, 10:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 580
Регистрация: 3.10.2005
Где: Москва

Репутация: 2
Всего: 5



С++ для умных, которым не лень разбираться.


--------------------
Хороший программист никогда ничего не делает хорошо с первого раза. Он понимает важность патчей.
Ⓘ ⓁⒾⓀⒺ ⓂⓄⓏⒾⓁⓁⒶ
PM MAIL   Вверх
Лыжа
Дата 26.10.2005, 23:16 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Код


int  *setlenth(int *a,int n)
{
    int *tmp=a;
    for(int i=0;i<n;i++,a++);
    *a='\0'; 
    return tmp;



что то типо того,не коmпилил ,но маст ворк.Идея вощем ясна я думаю.
  Вверх
Страницы: (3) Все 1 [2] 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

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

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

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

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


 




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


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

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