Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.77/30: Рейтинг темы: голосов - 30, средняя оценка - 4.77
3 / 4 / 1
Регистрация: 13.07.2011
Сообщений: 313

Как узнать размер двумерного вектора?

28.07.2011, 14:00. Показов 6892. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
есть квадратная матрица. Для ее хранения создаю динамический массив:
C++
1
2
3
4
5
6
7
8
9
10
double **matrix = new double*[range];
    for (int i = 0; i < range; i++) 
    {
        matrix[i] = new double[range]();
    }
...
// Освобождение памяти
    for ( int i =0; i < range; i++)
    delete[] matrix[i];
    delete[] matrix;
Нужно узнать размер этого массива (не важно - по горизонтали или вертикали, т.к. матрица квадратная)
Но вообще хотелось бы узнать как такие вещи делаются.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
28.07.2011, 14:00
Ответы с готовыми решениями:

Как изменить размер двумерного вектора?
Объявление у меня такое: std::vector&lt;std::vector&lt;std::size_t&gt;&gt; Data; Изначально размер неизвестен, число строк и столбцов зависит от...

Размер двумерного вектора
имею такое объявление vector&lt;vector&lt;int&gt;&gt; Mat; vector&lt;int&gt; Vec; инициализируем эту структуру, элементы в Mat хранятся так -...

Как вывести размер вектора
Скажите, пожалуйста, что нужно добавить в код чтобы вывести размер вектора? Элементы я вывел.. #include &lt;iostream&gt; #include...

21
 Аватар для OstapBender
594 / 532 / 76
Регистрация: 22.03.2011
Сообщений: 1,585
28.07.2011, 14:03
пользователь сам задаёт размер и следит за ним.
range*range ваш размер.
0
Заблокирован
28.07.2011, 14:04
ты же знаешь сколько выделил, столько же и удали. Если в функцию передаёшь массив, то передавай и его размер
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
28.07.2011, 14:53
Для статическог массива mass число элементов можно рассчитать по формуле
C++
1
int n = sizeof(mass)/sizeof(mass[0]);
Для динамики этот алгоритм не применим, для подсчёта числа элементов динамического массива нужно использовать алгоритм
C++
1
2
while(mass + i)
     i++;
т.е условием окнчания цикла будет происходить при доступе к 1-й ячейке памяти которая находится за пределами массива.
1
28.07.2011, 14:57

Не по теме:

Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
while(mass + i)
i++;
а можно не крутить велосипеды каждый раз пересчитывая эту хрень для матрици hello19 на 4000элементов млин...

0
 Аватар для Mayonez
392 / 284 / 53
Регистрация: 26.12.2009
Сообщений: 874
28.07.2011, 15:04
C++
1
РАЗМЕР = range;


Добавлено через 1 минуту
Цитата Сообщение от hello19 Посмотреть сообщение
double **matrix = new double*[range];
range где-то же обьявляется или вводится
0
3 / 4 / 1
Регистрация: 13.07.2011
Сообщений: 313
28.07.2011, 15:48  [ТС]
раньше объявляется
0
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
28.07.2011, 16:20
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
т.е условием окнчания цикла будет происходить при доступе к 1-й ячейке памяти которая находится за пределами массива.
А как узнать, что ячейка памяти хранится за пределами массива, если размер массива не известен?
о_0
0
 Аватар для Roof
155 / 155 / 44
Регистрация: 03.11.2010
Сообщений: 393
28.07.2011, 17:37
2 hello19
раньше объявляется
Ну так и вот как и сказали:
C++
1
размер == range
0
Заблокирован
28.07.2011, 19:07
Цитата Сообщение от Deviaphan Посмотреть сообщение
А как узнать, что ячейка памяти хранится за пределами массива, если размер массива не известен?
о_0
очевидно автор хочет SIGSEGV словить, вот так и проверяет
2
Эксперт С++
 Аватар для grizlik78
2382 / 1666 / 279
Регистрация: 29.05.2011
Сообщений: 3,402
28.07.2011, 19:18
Цитата Сообщение от CAHTEXHUK Посмотреть сообщение
очевидно автор хочет SIGSEGV словить, вот так и проверяет
SIGSEGV может наступить заметно позже, чем кончатся элементы массива. Так что способ не точный.
0
28.07.2011, 19:23

Не по теме:

Цитата Сообщение от grizlik78 Посмотреть сообщение
Так что способ не точный.
А давайте обсуждать завершение цикла путём выключения питания?

0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
28.07.2011, 22:07
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
т.е условием окнчания цикла будет...
... переполнение 32(64)битного беззнакового целого.
0
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
29.07.2011, 06:00
Цитата Сообщение от easybudda Посмотреть сообщение
. переполнение 32(64)битного беззнакового целого.
Не-а! Цикл завершится при некотором числе, при сдвиге на которое mass будет указывать на нулевую ячейку. Т.е. при переполнении указателя.)
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
29.07.2011, 11:41
Цитата Сообщение от Deviaphan Посмотреть сообщение
Т.е. при переполнении указателя
Видимо удивлю, но по сути указатель - как-раз беззнаковое целое.
0
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
29.07.2011, 11:52
Цитата Сообщение от easybudda Посмотреть сообщение
Видимо удивлю
Не, не удивил. Это две абсолютно разные сущности. То, что они бинарно совместимы, вполне можно считать приятным стечением обстоятельств. И я не уверен, что на всех платформах они совместимы.
Тем более, что ты не уточнил, о каком из беззнаковых целых ты говорил о i или о mass.)
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
29.07.2011, 12:05
Цитата Сообщение от Deviaphan Посмотреть сообщение
Это две абсолютно разные сущности.
А в чём разница?
Цитата Сообщение от Deviaphan Посмотреть сообщение
Тем более, что ты не уточнил, о каком из беззнаковых целых ты говорил о i или о mass.)
Ни о том, ни о другом. Переполнится то целое, в котором оказывается сумма i и m. Это может быть регистр, или безымянная ячейка памяти размером с указатель - не важно.
0
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
29.07.2011, 12:08
Цитата Сообщение от easybudda Посмотреть сообщение
Переполнится то целое, в котором оказывается сумма i и m
Ой, да. Я её вместо mass имел в виду.)

Цитата Сообщение от easybudda Посмотреть сообщение
А в чём разница?
Число - это число.
Указатель - это указатель на ячейку памяти.
Разве не очевидно?
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
29.07.2011, 12:16
Цитата Сообщение от Deviaphan Посмотреть сообщение
Указатель - это указатель на ячейку памяти.
Разве не очевидно?
Указатель - это число, обозначающее номер ячейки в памяти...
0
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
29.07.2011, 12:19
Цитата Сообщение от easybudda Посмотреть сообщение
Указатель - это число, обозначающее номер ячейки в памяти...
Да не может быть!..
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
29.07.2011, 12:19
Помогаю со студенческими работами здесь

Как удалить строку/столбец из двумерного вектора?
Прошу помощи. До самого не доходит. Имеем вектор v . std::vector&lt;std::vector&lt;int&gt; &gt; v( N, std::vector&lt;int&gt;M); Как с помощью...

Как можно увеличить размер вектора, который является элементом вектора vector<vector<int>>arr(n, vector <int>)
Написал программу, которая создает вектор 'а' векторов 'b', вектора 'b' содержат 2 числа. Стало интересно, как нужно изменить программу...

Как реализовать матрицу посредством двумерного вектора? (std::vector)
const int matrix_A_Columns = 12000; const int matrix_A_Rows = 25000; double matrix_A; как вот это написать с помощью вектора?

Как объявить, что размер вектора равен нулю?
как объявить что размер вектора равен нулю? Компилятор говорит, что минимум 1 элемент должен быть, но в задании написано обязательно это...

Как указать размер элементов вектора при создании ?
Доброго времени суток! Прошу помощи в следующем: Дано задание - ввести в строку с клавиатуры несколько слов (раздельных пробелом) и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru