![]() |
|
Модераторы: diadiavova, gambit |
![]()
|
|
| Exception |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 4525 Регистрация: 26.12.2004 Репутация: 18 Всего: 186 |
Не понял. Массивы -- они и в C++ и в C# есть и именно в том виде, в котором они есть в VB .NET Добавлено через 1 минуту
Почему же, массивы элементов бывают весьма полезны. Добавлено через 2 минуты и 41 секунду И в VB .NET / C# массивы элементов управления не занимают кучу места и ресурсов |
|||
|
||||
| Kirill89 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 501 Регистрация: 17.10.2006 Где: Питер Репутация: нет Всего: 4 |
Exception, Нет, очевидно мы непоняли друг друга
Это в С++ неиспользуется из-зи экономии ресурсов. Там есть массив в куче - vector, но он не является полноценным динамическим массивом, в моём понимании этого термина. |
|||
|
||||
| HappyLife |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 642 Регистрация: 17.5.2006 Репутация: нет Всего: 8 |
Kirill89,
Он являеться полноценным динамическим массивом. В полном смысле этого слова. Также ему на помощь имеются map, list. Ты расскажи, что вектор делать не умеет. |
|||
|
||||
| Exception |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 4525 Регистрация: 26.12.2004 Репутация: 18 Всего: 186 |
Кстати, в VB .NET это тоже не используется. Ну то есть конечно их можно использовать, но остались они только для хоть какой-нибудь совместимости с VB 6. Никто не вынуждает тебя пользоваться этой ерундой, когда есть такие удобные классы как List (Of T) и прочая, прочая. Добавлено через 1 минуту и 8 секунд Кстати, если не ошибаюсь, List (Of T) - это аналог vector<T>. |
|||
|
||||
| ivashkanet |
|
|||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: 5 Всего: 149 |
А я не говорю, что они неполезны (боже упаси меня от такой ереси) Я говорил про динамические массивы Которые, кстати, декомпилируются в "создание большего массива" + "копирование всех элементов из старого массива в новый" |
|||
|
||||
| Exception |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 4525 Регистрация: 26.12.2004 Репутация: 18 Всего: 186 |
Угу, жуткая ересь. Очень полезно бывает почитать отрефлекторенный код.
|
|||
|
||||
| Kirill89 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 501 Регистрация: 17.10.2006 Где: Питер Репутация: нет Всего: 4 |
Серьёзно?! Я всегда считал, что просто сдвигается адрес первой и последней ячейки памяти Тогда ясно почему он кушает ресурсы... Несовсем... Вектор хранит только адреса памяти и позволяет делать обход по ним только без указания индекса. Тоесть по этому массиву можно пробежаться только от конца к началу или наоборот. А лист, если я не ошибаюсь, хранит конкретные значения и позволяте обратиться к ним по индексу. |
|||
|
||||
| Exception |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 4525 Регистрация: 26.12.2004 Репутация: 18 Всего: 186 |
Конкретные значения для ссылочных типов бывают только в куче и нигде больше Во всех переменных всегда хранятся ссылки! И в списке тоже хранятся ссылки, если конечно, это не List (Of Integer) -- тут ты, безусловно, прав. Нет, по индексу к элементы списка не обратишься, хотя средствами LINQ это и реализуется. Туплю, можно. Это сообщение отредактировал(а) Exception - 10.4.2007, 22:37 |
|||
|
||||
| Kirill89 |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 501 Регистрация: 17.10.2006 Где: Питер Репутация: нет Всего: 4 |
Exception, ну я небыл уверен, потому, что в большенстве своем пользовался векторм, он позволяет легко лепить такие чудесные вещи как отмена любого колличества действий (как в MS Office)
А лист имеет табличную систему, из чего и следет индекс... Несовсем понял: это как конкретные значения для ссылочных типов? ссылка это тоже тип, хотя и пишется
насамом деле если сделать
То значение переменной *м будет равно следующей ячейки памяти, а не 13. А переменная p приэтом несёт сам адрес переменной типа int. Я могу ошибаться, но помоему, когда я учил было именно так P.S.: извините за жуткий офф топик, но я незнаю как этот код бдет выглядеть в vb.net, если он вообще там возможен. Это сообщение отредактировал(а) Kirill89 - 11.4.2007, 21:50 |
||||
|
|||||
| Kirill89 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 501 Регистрация: 17.10.2006 Где: Питер Репутация: нет Всего: 4 |
Вот тут всё видно А как же ещё? никакие переменные кроме внтренних переменных проекта немогут быть записаны нигде кроме кучи. |
|||
|
||||
| Exception |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 4525 Регистрация: 26.12.2004 Репутация: 18 Всего: 186 |
Паттерн "Команда" Теперь по поводу памяти. Указателей в .NET (про всякие извраты молчу) нету. Но, с другой стороны, создав, например, массив ссылочных типов и записав объект myObject в элемент массива с индексом ноль, ты туда записываешь не сам объект, а ссылку на него, Другими словами, все переменные ссылочных типов являются указателями, которые "притворяются" обычными переменными. Твоя цитата Массив, список и т.п. всегда хранят именно ссылки на объекты, понимаешь, о чём я |
|||
|
||||
| HappyLife |
|
||||||||||||||||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 642 Регистрация: 17.5.2006 Репутация: нет Всего: 8 |
P.S Прошу прощения что к вам залез. Уж очень стало обидно за С++=)
Заранее извиняюсь. И если позволите, поправляю некоторые нюансы. Дабы не было ошибочных мнений.
Вектор не хранит только адреса, вектор хранит всё! Причем все элементы идут строго по порядку. Строго друг за другом. Но если у тебя есть желание хранить адреса, храни. Дело полностью твое. По этому элементу можно пробежаться хоть с середины, да откуда угодно. А лист хранит все тоже самое что и вектор, разница лишь в том что нету индексов. И не факт, что хранит он строго все попорядку.
Я был другого мнения. Абсалютно везде.
Не путать ссылки, и указатели. Ссылка
Абсаюлютно верно. В этом как раз таки и гибкость С++ Добавлено @ 11:41
Да нет. Кроме кучи переменные еще в стеке ошиваются.
Нее... это не адрес, это случайное значение... Адрес перется так
Это сообщение отредактировал(а) HappyLife - 13.4.2007, 11:43 |
||||||||||||||||||||
|
|||||||||||||||||||||
| ivashkanet |
|
|||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: 5 Всего: 149 |
Откуда такие данные? Вы можете это подтвердить документально? Есть два вида памяти: Стек и Куча. В первом хранятся Value-типы, во втором --- Ссылочные и запакованные Value-типы. Возможно, но это еще и потенциальные ошибки выхода за пределы массива и уничтожения чужих данных. В .Net есть специальные классы, которые предоставляют похожую логику -- Итераторы, которые, к тому же безопасны. |
|||
|
||||
| HappyLife |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 642 Регистрация: 17.5.2006 Репутация: нет Всего: 8 |
ivashkanet, см стандарт.
Вектор обязан, чтобы все элементы хранились друг за другом.
В стеке храниться локальные переменные, насколько мне извесно( не верен сто процентно) А в куче храниться все созданное new. Я не принижаю преимущество NET. По мне как программисту, главное чтобы работало, чтобы написать можно было быстро, и рефакторить в будущем не мучительно. Я хоть на досовском басике напишу. если условиям удовлетворит. |
|||
|
||||
| ivashkanet |
|
||||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: 5 Всего: 149 |
Элементы или ссылки на них?
С некоторым могу поспорить 1)
Будет хранится в стеке (ибо структура, выступающая локальной переменной). 2) внутри кода той же структуры Point координата X точки не является локальной переменной, но она будет храниться в стеке, как часть структурной переменной. |
||||
|
|||||
![]()
|
| Правила форума VB .NET | |
|
|
Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, diadiavova. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | VB .NET | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |