Форум программистов, компьютерный форум CyberForum.ru

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

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

Cоздание неизвестное заранее количество переменных - C++

20.01.2012, 18:46. Просмотров 2279. Ответов 35
Метки нет (Все метки)

Здравствуйте. Как осуществить создание неизвестное заранее количество переменных?
Например пользователь вводит число k, а программа создает k переменных.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.01.2012, 18:46     Cоздание неизвестное заранее количество переменных
Посмотрите здесь:

C++ Cоздание проги с заголовочным файлом
Cоздание простой игры C++
C++ Cоздание итератора с использованием шаблонов
C++ Сколько выделить памяти, если заранее неизвестно количество вложенных классов
C++ Как захватить динамически память, не зная заранее, какое количество памяти надо?
как сделать неизвестное количество вложенных циклов C++
C++ Как передать в функцию заранее неизвестное число параметров?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Melkor
30 / 30 / 1
Регистрация: 15.12.2011
Сообщений: 108
20.01.2012, 19:44     Cоздание неизвестное заранее количество переменных #21
go, спасибо интересная весчь. (извините за необразованность, но пишу на плюсах и чистым си не интересовалсо)
Jоker
4 / 4 / 0
Регистрация: 12.12.2011
Сообщений: 107
20.01.2012, 19:46  [ТС]     Cоздание неизвестное заранее количество переменных #22
а можно увеличить размер уже созданного массива?
Melkor
30 / 30 / 1
Регистрация: 15.12.2011
Сообщений: 108
20.01.2012, 19:48     Cоздание неизвестное заранее количество переменных #23
Цитата Сообщение от Jоker Посмотреть сообщение
а можно увеличить размер уже созданного массива?
в плюсах нет, разве что ты будешь пользовацо вектором, тогда проблеммы с выделением памяти тебя заботить небудут.
Jоker
4 / 4 / 0
Регистрация: 12.12.2011
Сообщений: 107
20.01.2012, 19:49  [ТС]     Cоздание неизвестное заранее количество переменных #24
Цитата Сообщение от Melkor Посмотреть сообщение
в плюсах нет, разве что ты будешь пользовацо вектором, тогда проблеммы с выделением памяти тебя заботить небудут.
Вектором?
go
Эксперт C++
3585 / 1365 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
20.01.2012, 19:52     Cоздание неизвестное заранее количество переменных #25
Цитата Сообщение от Jоker Посмотреть сообщение
Вектором?
Да.
Цитата Сообщение от Melkor Посмотреть сообщение
в плюсах нет,
Да, подобной функции realloc нет, но можно ведь ухитриться. Выделить новую память. Скопировать, и освободить старую
Jоker
4 / 4 / 0
Регистрация: 12.12.2011
Сообщений: 107
20.01.2012, 19:55  [ТС]     Cоздание неизвестное заранее количество переменных #26
можно удалить отдельный элемент массива?
Melkor
30 / 30 / 1
Регистрация: 15.12.2011
Сообщений: 108
20.01.2012, 19:56     Cоздание неизвестное заранее количество переменных #27
Цитата Сообщение от go Посмотреть сообщение
но можно ведь ухитриться.
ну зачем же изобретать велосипед ???
go
Эксперт C++
3585 / 1365 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
20.01.2012, 19:58     Cоздание неизвестное заранее количество переменных #28
Цитата Сообщение от Jоker Посмотреть сообщение
можно удалить отдельный элемент массива?
Да. http://www.cplusplus.com/reference/stl/vector/erase/
Melkor
30 / 30 / 1
Регистрация: 15.12.2011
Сообщений: 108
20.01.2012, 19:58     Cоздание неизвестное заранее количество переменных #29
Цитата Сообщение от Jоker Посмотреть сообщение
можно удалить отдельный элемент массива?
опять таки вектор тебе в помощь
go
Эксперт C++
3585 / 1365 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
20.01.2012, 19:59     Cоздание неизвестное заранее количество переменных #30
Цитата Сообщение от Melkor Посмотреть сообщение
ну зачем же изобретать велосипед ???
А как еще? Если вектором не хотите
Melkor
30 / 30 / 1
Регистрация: 15.12.2011
Сообщений: 108
20.01.2012, 20:01     Cоздание неизвестное заранее количество переменных #31
Цитата Сообщение от go Посмотреть сообщение
А как еще? Если вектором не хотите
ну тогда ничего другого не остается, как закатать рукава, налить ведро кофе и ...
go
Эксперт C++
3585 / 1365 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
20.01.2012, 20:01     Cоздание неизвестное заранее количество переменных #32
Цитата Сообщение от Melkor Посмотреть сообщение
опять таки вектор тебе в помощь
http://alenacpp.blogspot.com/2005/06/vector_30.html
Как происходит в векторе
Допустим, у нас есть вектор из n элементов. Что происходит, когда программист добавляет еще один? Когда есть запасная память, элемент пишется туда. Когда ее нет, выделяется непрерывный кусок памяти достаточный для n*K элементов, где K - коэффицент. В него копируются предыдущие n, добавляется наш новый элемент, старый кусок размером n освобождается. Если бы запаса не было, то память бы выделялась каждый раз при добавлении нового элемента, что страшно неэффективно.
Так или иначе мы этого не избегаем.
Jоker
4 / 4 / 0
Регистрация: 12.12.2011
Сообщений: 107
20.01.2012, 20:11  [ТС]     Cоздание неизвестное заранее количество переменных #33
что такое size_t?
go
Эксперт C++
3585 / 1365 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
20.01.2012, 20:16     Cоздание неизвестное заранее количество переменных #34
Цитата Сообщение от Jоker Посмотреть сообщение
size_t?
http://www.cplusplus.com/reference/c...cstdio/size_t/

Не по теме:

Форум и гугол Вы точно перепутали.

easybudda
Эксперт С++
9412 / 5435 / 917
Регистрация: 25.07.2009
Сообщений: 10,428
21.01.2012, 01:12     Cоздание неизвестное заранее количество переменных #35
Цитата Сообщение от dimcoder Посмотреть сообщение
int k = rand()%25;
k будет принимать значения от 0 до 24. Вариант с массивом нулевой длины лучше как-то отдельно обработать...

Цитата Сообщение от Jоker Посмотреть сообщение
можно удалить отдельный элемент массива?
можно
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
 
int main(void){
    int * arr, i, size = 10;
    
    if ( ! ( arr = malloc(sizeof(int) * size) ) ){
        perror("malloc");
        exit(1);
    }
    
    printf("Array:\n");
    for ( i = 0; i < size; ++i )
        printf("%d ", (arr[i] = i + 1));
    
    memmove(arr, arr + 1, sizeof(int) * --size);
    
    if ( ! ( arr = realloc(arr, sizeof(int) * size) ) ){
        perror("realloc");
        exit(1);
    }
    
    printf("\nWithout first element:\n");
    for ( i = 0; i < size; ++i )
        printf("%d ", arr[i]);
    
    printf("\n");
    free(arr);
    
    exit(0);
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.01.2012, 20:02     Cоздание неизвестное заранее количество переменных
Еще ссылки по теме:

Cоздание двумерного динамического массива C++
Неизвестное количество переменных в функции C++
C++ Cоздание текстовых файлов в цикле
Неизвестное количество строк в двумерном массиве C++
C++ Как принять заранее неизвестное количество аргументов и передать их в конструктор?

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

Или воспользуйтесь поиском по форуму:
silent_1991
21.01.2012, 20:02     Cоздание неизвестное заранее количество переменных
  #36
 Комментарий модератора 
Jоker, если ответ на следующий вопрос тоже можно будет узнай по первой ссылке соответствующего запроса в гугле - закрою тему.
Yandex
Объявления
21.01.2012, 20:02     Cоздание неизвестное заранее количество переменных
Ответ Создать тему
Опции темы

Текущее время: 19:42. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru