Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.89
Stas0n
3 / 4 / 0
Регистрация: 13.07.2011
Сообщений: 313
#1

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

28.07.2011, 14:00. Просмотров 2433. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.07.2011, 14:00
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как узнать размер двумерного вектора? (C++):

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

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

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

Как удалить строку/столбец из двумерного вектора? - C++
Прошу помощи. До самого не доходит. Имеем вектор 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>) - C++
Написал программу, которая создает вектор 'а' векторов 'b', вектора 'b' содержат 2 числа. Стало интересно, как нужно изменить программу...

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

21
OstapBender
584 / 523 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
28.07.2011, 14:03 #2
пользователь сам задаёт размер и следит за ним.
range*range ваш размер.
0
LosAngeles
Заблокирован
28.07.2011, 14:04 #3
ты же знаешь сколько выделил, столько же и удали. Если в функцию передаёшь массив, то передавай и его размер
0
-=ЮрА=-
Заблокирован
Автор FAQ
28.07.2011, 14:53 #4
Для статическог массива mass число элементов можно рассчитать по формуле
C++
1
int n = sizeof(mass)/sizeof(mass[0]);
Для динамики этот алгоритм не применим, для подсчёта числа элементов динамического массива нужно использовать алгоритм
C++
1
2
while(mass + i)
     i++;
т.е условием окнчания цикла будет происходить при доступе к 1-й ячейке памяти которая находится за пределами массива.
1
Jupiter
28.07.2011, 14:57
  #5

Не по теме:

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

0
Mayonez
380 / 272 / 21
Регистрация: 26.12.2009
Сообщений: 875
28.07.2011, 15:04 #6
C++
1
РАЗМЕР = range;


Добавлено через 1 минуту
Цитата Сообщение от hello19 Посмотреть сообщение
double **matrix = new double*[range];
range где-то же обьявляется или вводится
0
Stas0n
3 / 4 / 0
Регистрация: 13.07.2011
Сообщений: 313
28.07.2011, 15:48  [ТС] #7
раньше объявляется
0
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1306 / 1221 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
28.07.2011, 16:20 #8
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
т.е условием окнчания цикла будет происходить при доступе к 1-й ячейке памяти которая находится за пределами массива.
А как узнать, что ячейка памяти хранится за пределами массива, если размер массива не известен?
о_0
0
Roof
154 / 154 / 10
Регистрация: 03.11.2010
Сообщений: 393
28.07.2011, 17:37 #9
2 hello19
раньше объявляется
Ну так и вот как и сказали:
C++
1
размер == range
0
CAHTEXHUK
Заблокирован
28.07.2011, 19:07 #10
Цитата Сообщение от Deviaphan Посмотреть сообщение
А как узнать, что ячейка памяти хранится за пределами массива, если размер массива не известен?
о_0
очевидно автор хочет SIGSEGV словить, вот так и проверяет
2
grizlik78
Эксперт С++
1973 / 1466 / 122
Регистрация: 29.05.2011
Сообщений: 3,034
28.07.2011, 19:18 #11
Цитата Сообщение от CAHTEXHUK Посмотреть сообщение
очевидно автор хочет SIGSEGV словить, вот так и проверяет
SIGSEGV может наступить заметно позже, чем кончатся элементы массива. Так что способ не точный.
0
Deviaphan
28.07.2011, 19:23
  #12

Не по теме:

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

0
easybudda
Модератор
Эксперт CЭксперт С++
9715 / 5666 / 971
Регистрация: 25.07.2009
Сообщений: 10,910
28.07.2011, 22:07 #13
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
т.е условием окнчания цикла будет...
... переполнение 32(64)битного беззнакового целого.
0
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1306 / 1221 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
29.07.2011, 06:00 #14
Цитата Сообщение от easybudda Посмотреть сообщение
. переполнение 32(64)битного беззнакового целого.
Не-а! Цикл завершится при некотором числе, при сдвиге на которое mass будет указывать на нулевую ячейку. Т.е. при переполнении указателя.)
0
easybudda
Модератор
Эксперт CЭксперт С++
9715 / 5666 / 971
Регистрация: 25.07.2009
Сообщений: 10,910
29.07.2011, 11:41 #15
Цитата Сообщение от Deviaphan Посмотреть сообщение
Т.е. при переполнении указателя
Видимо удивлю, но по сути указатель - как-раз беззнаковое целое.
0
29.07.2011, 11:41
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.07.2011, 11:41
Привет! Вот еще темы с ответами:

Как установить размер вектора не заполняя его элементами? - C++
Есть вот такой вот вектор vector&lt;vector&lt;Struct&gt;&gt; Vector_Struct;в ходе выполнения программы я узнаю какой размер мне нужен под него, как...

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

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

как узнать размер строки? - C++
есть массив указателей string **str на объекта класс string; как узнать размер строки, записанной, например, в *str?


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.