Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 5.00/8: Рейтинг темы: голосов - 8, средняя оценка - 5.00
20 / 16 / 11
Регистрация: 07.12.2013
Сообщений: 244
1

Есть ли конструкции на подобии массивов,но размер которых можно менять сколь угодно раз во время работы программы?

07.02.2014, 12:28. Просмотров 1517. Ответов 22
Метки нет (Все метки)


Есть ли конструкции на подобии массивов,но размер которых можно менять сколь угодно раз во время
работы программы? В связанных списках толком ничего не понял...
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.02.2014, 12:28
Ответы с готовыми решениями:

вписать какой угодно фрукт во время работы программы
Ребята,помоги с заданием плз....не могу понять как при работе программы можно вписать какой-угодно...

Сколь угодно большое целое число
Задача: реализовать обьект lint - сколь угодно большое целое число (знаковое). Необходимо...

Создать класс List, в котором может сохраниться сколь угодно целых чисел
Задание: Создать класс List, в котором может сохраниться сколь угодно целых чисел, реализуя при...

Изменить размерность массивов во время работы программы
Добрый день. Суть проблемы такова: из txt файла считывается размер двумерного массива и создает...

__________________
Помогаю в написании студенческих работ здесь.
Записывайтесь на профессиональные курсы C++ разработчиков
22
Don't worry, be happy
16972 / 9853 / 1897
Регистрация: 27.09.2012
Сообщений: 24,431
Записей в блоге: 1
07.02.2014, 12:29 2
Лучший ответ Сообщение было отмечено Jupiter как решение

Решение

есть уже готовый шаблон в STL std::vector
1
Mobile Software Engineer
Эксперт С++
5133 / 1570 / 952
Регистрация: 23.01.2011
Сообщений: 3,194
07.02.2014, 12:30 3
std::vector
1
582 / 385 / 216
Регистрация: 20.01.2013
Сообщений: 1,169
07.02.2014, 12:33 4
можно менять сколь угодно раз во время
работы программы
массивы тоже можно менять, если не хотите то ответы выше.

C++
1
2
3
4
int * arr = new int[10];
/* что то делаем */
delete [] arr;
arr = new int[20];
0
20 / 16 / 11
Регистрация: 07.12.2013
Сообщений: 244
07.02.2014, 12:35  [ТС] 5
Цитата Сообщение от egor2116 Посмотреть сообщение
массивы тоже можно менять, если не хотите то ответы выше.

C++
1
2
3
4
int * arr = new int[10];
/* что то делаем */
delete [] arr;
arr = new int[20];
Я лично хочу сделать так,чтобы пользователь мог ввести сколь угодно переменных,и с помощью вашего метода это невозможно.
0
Mobile Software Engineer
Эксперт С++
5133 / 1570 / 952
Регистрация: 23.01.2011
Сообщений: 3,194
07.02.2014, 12:37 6
Цитата Сообщение от Игорюня Посмотреть сообщение
пользователь мог ввести сколь угодно переменных
имеется ввиду элементов, и что бы они заталкивались в вектор?
то есть не используя выделение памяти под конкретное число?
0
582 / 385 / 216
Регистрация: 20.01.2013
Сообщений: 1,169
07.02.2014, 12:39 7
Я лично хочу сделать так,чтобы пользователь мог ввести сколь угодно переменных,и с помощью вашего метода это невозможно.
1. Если вы не знаете как это сделать - это не значит не возможно.
2. std::vector работает именно так как я написал.
0
20 / 16 / 11
Регистрация: 07.12.2013
Сообщений: 244
07.02.2014, 12:42  [ТС] 8
Цитата Сообщение от Ev[G]eN Посмотреть сообщение
имеется ввиду элементов, и что бы они заталкивались в вектор?
то есть не используя выделение памяти под конкретное число?
Ну тот же калькулятор.Вы каждый раз вводите различное количество значений.То есть запись в вектор.
0
Mobile Software Engineer
Эксперт С++
5133 / 1570 / 952
Регистрация: 23.01.2011
Сообщений: 3,194
07.02.2014, 12:43 9
Игорюня, в общем, если правильно понял, то вот пример
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <algorithm>
#include <iterator>
#include <iostream>
#include <vector>
 
int main()
{
    std::vector <int> vector;
    std::cout << "Input elements: " << std::endl;
    std::copy(std::istream_iterator <int> (std::cin), std::istream_iterator <int> (), std::back_inserter(vector));
    std::cout << "Vector: " << std::endl;
    std::copy(vector.begin(), vector.end(), std::ostream_iterator <int> (std::cout, " "));
 
    std::system("pause >> temp");
    return 0;
}
будет считывать пока не нажмете Ctrl + Z
1
20 / 16 / 11
Регистрация: 07.12.2013
Сообщений: 244
07.02.2014, 12:47  [ТС] 10
Цитата Сообщение от Ev[G]eN Посмотреть сообщение
Игорюня, в общем, если правильно понял, то вот пример
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <algorithm>
#include <iterator>
#include <iostream>
#include <vector>
 
int main()
{
    std::vector <int> vector;
    std::cout << "Input elements: " << std::endl;
    std::copy(std::istream_iterator <int> (std::cin), std::istream_iterator <int> (), std::back_inserter(vector));
    std::cout << "Vector: " << std::endl;
    std::copy(vector.begin(), vector.end(), std::ostream_iterator <int> (std::cout, " "));
 
    std::system("pause >> temp");
    return 0;
}
будет считывать пока не нажмете Ctrl + Z
Верно.Кстати,почему бы не использовать пространство имён,ведь каждый раз писать std это как то...Хотя не мне вас учить.И я пока что толком не знаю,что такое пространство имён.
0
582 / 385 / 216
Регистрация: 20.01.2013
Сообщений: 1,169
07.02.2014, 12:48 11
или пока не "испортите" поток
или пока не отключат свет.

Добавлено через 49 секунд
И я пока что толком не знаю
единственные разумные от вас слова.
0
Don't worry, be happy
16972 / 9853 / 1897
Регистрация: 27.09.2012
Сообщений: 24,431
Записей в блоге: 1
07.02.2014, 12:49 12
Цитата Сообщение от Игорюня Посмотреть сообщение
И я пока что толком не знаю,что такое пространство имён.
using namespace std
0
Croessmah
07.02.2014, 12:49
  #13

Не по теме:

egor2116, Tulosba, мда...

0
Mobile Software Engineer
Эксперт С++
5133 / 1570 / 952
Регистрация: 23.01.2011
Сообщений: 3,194
07.02.2014, 12:50 14
Цитата Сообщение от Игорюня Посмотреть сообщение
ведь каждый раз писать std это как то
по-моему, это личный выбор каждого, тем более, что разницы, кроме как визуальной, нет
я же не запрещаю Вам переделать свой код так, как удобно Вам
0
Модератор
Эксперт по электронике
8360 / 6206 / 834
Регистрация: 14.02.2011
Сообщений: 21,572
07.02.2014, 13:54 15
Цитата Сообщение от egor2116 Посмотреть сообщение
std::vector работает именно так как я написал.
это в смысле так
Цитата Сообщение от egor2116 Посмотреть сообщение
int * arr = new int[10];
/* что то делаем */
delete [] arr;
arr = new int[20];
а данные из старого массива в новый не надо переносить?

так что примерно так
C++
1
2
3
4
5
6
int * arr = new int[10];
/* что то делаем */
int * arr1=new int[20];
// коприруем значения
delete [] arr;
arr =arr1;
плюс ко всему вектор не добавляет каждый раз память а выделяет блоками, размер настраивается
так что алгоритм примерно такой
проверяем индекс массива
если не больше выделенного блока то
записываем элемент
изменяем размер
выходим
иначе
выделяем новую память размером как прежняя плюс размер блока
копируем значения
удаляем старую память
записываем новый элемент
изменяем размер
выходим
0
582 / 385 / 216
Регистрация: 20.01.2013
Сообщений: 1,169
07.02.2014, 14:02 16
а данные из старого массива в новый не надо переносить?
Речь шла о изменении размера массива, читайте внимательней, если хотите по умничать, ясное дело что надо.
плюс ко всему вектор не добавляет каждый раз память а выделяет блоками, размер настраивается
Вы прям Америку открыли.
0
582 / 385 / 216
Регистрация: 20.01.2013
Сообщений: 1,169
07.02.2014, 14:15 17
SatanaXIII, Tulosba, да успокойтесь вы, автор темы после этих сообщений в ужасе сбежал переосмысливать жизнь. Знаю одно на верняка вас помирит кнопка RESET, она одинаково работает на всех ОС.

Добавлено через 1 минуту
Теперь АТ закроется в кладовке и не выйдет до тех пор пока не решит, WINDOWS, LINUX или продать почку и купить не чем не превосходящий MAC.
0
Модератор
Эксперт по электронике
8360 / 6206 / 834
Регистрация: 14.02.2011
Сообщений: 21,572
07.02.2014, 14:21 18
Цитата Сообщение от egor2116 Посмотреть сообщение
Речь шла о изменении размера массива,
т.е просто размер данные фиг с ним
а как быть с этим ?
Цитата Сообщение от egor2116 Посмотреть сообщение
std::vector работает именно так как я написал.
0
582 / 385 / 216
Регистрация: 20.01.2013
Сообщений: 1,169
07.02.2014, 14:36 19
а как быть с этим ?
Принцип работы std::vector основан на динамическом массиве, с выделением блока памяти как вы упомянули.
Где вы в приведенном мной отрывке кода не увидели динамического массива или выделения блока памяти ?
C++
1
2
3
4
int * arr = new int[10];
/* что то делаем */
delete [] arr;
arr = new int[20];
т.е просто размер данные фиг с ним
Вы опять не дочитываете сообщения или читаете не внимательно.
, ясное дело что надо.
я лишь АТ показал принцип, а оформить его в виде класса подобного vector или прям в main писать это кто как хочет или как поставлено конкретное задание или у кого на сколько знаний хватает.
0
Модератор
Эксперт по электронике
8360 / 6206 / 834
Регистрация: 14.02.2011
Сообщений: 21,572
07.02.2014, 14:39 20
Цитата Сообщение от egor2116 Посмотреть сообщение
Где вы в приведенном мной отрывке кода не увидели динамического массива или выделения блока памяти ?
я не увидел копирования значений, которое просто необходимы для вектора
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.02.2014, 14:39

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Создать массив строк, чтобы их можно было менять в процессе работы программы
Как сделать массив из 5 строк, чтобы их можно было менять в процессе работы программы?

Как во время работы программы создать несколько дополнительных массивов
Добрый день. Вопрос в следующем: подскажите, как во время работы программы создать несколько доп....

Можно ли убедить кого угодно в чём угодно?
Часто на форуме мы спорим друг с другом, пытаясь доказать другому свою правоту, а зачастую просто...

Как можно суммировать время работы программы?
Здравствуйте, хочу написать прогру которая записыват время работы других программ. Но я ни как не...

Можно ли заполнять StringGrid во время работы программы
вопрос по делфи, помогите пожалуйста. Работая с обьектом стрингГрид, могу ли я заполнить его во...

Можно ли вычислить приблизительное время работы программы?
Вечер добрый. Можно ли вычислить приблизительное время работы программы, зная сколько операций...


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

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

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