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

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

Войти
Регистрация
Восстановить пароль
 
isewum
1 / 1 / 0
Регистрация: 06.06.2014
Сообщений: 7
#1

Указание границ массива C++ - C++

06.06.2014, 15:54. Просмотров 535. Ответов 12
Метки нет (Все метки)

В паскале при объявлении массива можно воспользоваться таким нехитрым кодом
Pascal
1
2
var
arr: array[1990..2020] of integer;
чтобы, например, в качестве индекса элемента выступал какой-то год и дабы выделить память на 30 элементов вместо 2020.
Есть ли аналог сего действа в C++?
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.06.2014, 15:54
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Указание границ массива C++ (C++):

Проверка границ массива - C++
Добрый день! Есть вопросы в решении задачи из книги Лафоре: массив - очередь, помещаем человека в конец очереди, выход человека из очереди...

Нарушение границ массива - C++
Насколько мне известно в C++ нет проверки границ массива. Почему в следующем коде выскакивает ошибка? void main(){ char str; ...

Класс массив. Задания произвольных границ индексов массива - C++
Составить класс для определения одномерных массивов целых чисел . Предусмотреть возможность обращения к отдельному элементу массива с...

Написать класс для динамического массива с проверкой границ (что подразумевают под инициализацией?) - C++
Привет, народ, есть такое задание: 2. написать класс для динамического массива с проверкой границ( аналог std::vector ) +должны...

Указание заданного промежутка - C++
В общем такое дело, нужно вычислить массу свинцовой трубы, но ее длина не меньше 10м и не больше 25м, все переведено в см. При вводе числа...

указание пути к файлу - C++
Столкнулся с проблемой указания пути к файлу. Написал функцию. Вызываю её так: readFile("test.txt",stran,&n); в моем случае файл...

12
Кудаив
329 / 406 / 24
Регистрация: 27.05.2012
Сообщений: 1,168
Завершенные тесты: 2
06.06.2014, 16:04 #2
Цитата Сообщение от isewum Посмотреть сообщение
Есть ли аналог сего действа в C++?
нету
0
Тамика
Котовчанин
917 / 461 / 145
Регистрация: 16.02.2010
Сообщений: 3,221
Записей в блоге: 27
06.06.2014, 16:05 #3
Цитата Сообщение от Кудаив Посмотреть сообщение
нету
Да ладно. Точно? А контейнер map такого не делает?
0
Кудаив
329 / 406 / 24
Регистрация: 27.05.2012
Сообщений: 1,168
Завершенные тесты: 2
06.06.2014, 16:08 #4
Цитата Сообщение от Тамика Посмотреть сообщение
map
а map это массив?
0
Тамика
Котовчанин
917 / 461 / 145
Регистрация: 16.02.2010
Сообщений: 3,221
Записей в блоге: 27
06.06.2014, 16:09 #5
Контейнер.

Добавлено через 25 секунд
Но для задач с массивом более чем подходит.
0
isewum
1 / 1 / 0
Регистрация: 06.06.2014
Сообщений: 7
06.06.2014, 16:12  [ТС] #6
Цитата Сообщение от Тамика Посмотреть сообщение
map
Просветите, пожалуйста, что это и как пользоваться
0
Кудаив
329 / 406 / 24
Регистрация: 27.05.2012
Сообщений: 1,168
Завершенные тесты: 2
06.06.2014, 16:16 #7
Цитата Сообщение от Тамика Посмотреть сообщение
Но для задач с массивом более чем подходит.
придется добавлять проверку при каждом обращении к элементу мапы по ключу - присутствует ли элемент в мапе

Добавлено через 44 секунды
но эт не суть - эт я нудного включил

Добавлено через 1 минуту
http://adorning.ru/2010/01/18/s-urok...ivnyiy-massiv/
0
Тамика
Котовчанин
917 / 461 / 145
Регистрация: 16.02.2010
Сообщений: 3,221
Записей в блоге: 27
06.06.2014, 16:18 #8
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от isewum Посмотреть сообщение
Просветите, пожалуйста, что это и как пользоваться
Так же, как и массивом. Только вместо индекса элемента, Вы используете любые данные-ключ, которые нужны. Хотите года использовать? Пожалуйста.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <map>
 
int main()
{
    std::map<int, int> years;
    for (int i = 1990; i < 2020; ++i)
        years[i] = i;
 
    std::cout << years[1990] << "\n";
    std::cout << years[2000] << "\n";
    system("pause>>null");
}
std::map<здесь пишете данные, которые нужны будут для ключа сначала, а потом для самого элемента. Это может быть int, string, char, double>. Так же и тип данных для индекса может быть любого типа. Есть есть вопросы - задавайте.

Добавлено через 36 секунд
Цитата Сообщение от Кудаив Посмотреть сообщение
но эт не суть - эт я нудного включил
Это точно. Я всегда использовала мапу для таких ситуаций. Очень удобно.
1
zer0mail
2379 / 2010 / 200
Регистрация: 03.07.2012
Сообщений: 7,251
Записей в блоге: 1
06.06.2014, 16:21 #9
Цитата Сообщение от isewum Посмотреть сообщение
array[1990..2020]
Имхо, это 31 элемент.
В С можно сделать константу (FistGod, например) и отнимать ее от года при чтении/записи элементов массива.
0
isewum
1 / 1 / 0
Регистрация: 06.06.2014
Сообщений: 7
06.06.2014, 16:30  [ТС] #10
Тамика, спасибо! Все по полочкам разложили.
Цитата Сообщение от zer0mail Посмотреть сообщение
Имхо, это 31 элемент.
Да, вы правы, но суть не в этом была.
0
Тамика
Котовчанин
917 / 461 / 145
Регистрация: 16.02.2010
Сообщений: 3,221
Записей в блоге: 27
06.06.2014, 16:35 #11
Цитата Сообщение от isewum Посмотреть сообщение
Тамика, спасибо! Все по полочкам разложили.
Всегда пожалуйста.
0
zer0mail
2379 / 2010 / 200
Регистрация: 03.07.2012
Сообщений: 7,251
Записей в блоге: 1
06.06.2014, 16:36 #12
Цитата Сообщение от isewum Посмотреть сообщение
Да, вы правы, но суть не в этом была.
Суть в том, чтобы решать задачу правильно и адекватным способом
0
azbest
41 / 41 / 8
Регистрация: 12.03.2013
Сообщений: 148
06.06.2014, 16:36 #13
Цитата Сообщение от zer0mail Посмотреть сообщение
В С можно сделать константу (FistGod, например) и отнимать ее от года при чтении/записи элементов массива.
Хороший вариант
C++
1
2
3
4
5
6
#define START 1990
..........................
int year[31];
..........................
int y=1995;
yaer[y-START]=300;
0
06.06.2014, 16:36
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.06.2014, 16:36
Привет! Вот еще темы с ответами:

Вывод в файл, с указание позиций - C++
Всем привет! Позвольте доходчиво объяснить вопрос? Допустим есть мап: map&lt;uint32, vector&lt;string&gt; &gt; myMap Ключ это как отдельная...

Явное указание в ветке условия if - C++
Здравствуйте! Такой вопрос: при использовании цикла мы можем игнорировать условие при помощи continue. Как это можно явно задать для if и...

Указание типа итератора в шаблоне - C++
Расскажите про этот момент. #include &lt;iostream&gt; #include &lt;vector&gt; using namespace std; template &lt;typename T, typename CONT =...

Динамическое указание адреса указателя - C++
мне нужно сделать int * a=(int*)0x123ff; cout&lt;&lt;a; динамически. Кто нибудь знает как это сделать?


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

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

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