C/C++
Задание массива в С++ с переменным количеством элементов
Здравствуйте! Мне нужно в С++ объявить массив с N элементов ( N будет введено перед этим ). Тимофей Хирьянов во время лекции ( https://www.youtube.com/watch?v=mgaOUpeh96M&t=16s ) дал понять, что существуют компиляторы, которые позволят объявить массив в С++ с количеством элементов, которое будет введено. Скажите, пожалуйста, о каких компиляторах идёт речь? Visual Studio не позволяет мне осуществить это.
Пользуйтесь во благо...
#include <iostream>
#include <vector>
using namespace std;
int main() {
system("chcp 1251 > nul");
cout << "Введите размер массива: ";
int n;
cin >> n;
auto box = new(nothrow) int[n];
if (box != nullptr) {
for (auto i = 0; i < n; ++i) box[i] = i + 1;
for (auto i = 0; i < n; ++i) cout << box[i] << ' ';
puts("");
delete[] box;
box = nullptr;
}
cout << "Введите размер вектора: ";
cin >> n;
vector<int> vec(n);
for (auto i = 0; i < n; ++i) vec[i] = i + 1;
for (auto i = 0; i < n; ++i) cout << vec[i] << ' ';
puts("");
system("pause > nul");
}
#include <iostream>
#include <vector>
using namespace std;
int main() {
system("chcp 1251 > nul");
cout << "Введите размер массива: ";
int n;
cin >> n;
auto box = new(nothrow) int[n];
if (box != nullptr) {
for (auto i = 0; i < n; ++i) box[i] = i + 1;
for (auto i = 0; i < n; ++i) cout << box[i] << ' ';
puts("");
delete[] box;
box = nullptr;
}
cout << "Введите размер вектора: ";
cin >> n;
vector<int> vec(n);
for (auto i = 0; i < n; ++i) vec[i] = i + 1;
for (auto i = 0; i < n; ++i) cout << vec[i] << ' ';
puts("");
system("pause > nul");
}
Вообще-то в C++ полагается использовать не массив, а класс vector, который фактически как раз такой массив с многими полезными дополнительными свойствами. Но можно использовать и динамические массивы, о которых написали выше.
Но есть компиляторы, которые позволяют использовать и массивы VLA (variable length array), длина которых может задаваться переменной в стиле int a[n]. Массивы VLA имеются в С, но в стандарт C++ не входят, однако некоторыми компиляторами C++, например, gcc, поддерживаются.
Но есть компиляторы, которые позволяют использовать и массивы VLA (variable length array), длина которых может задаваться переменной в стиле int a[n]. Массивы VLA имеются в С, но в стандарт C++ не входят, однако некоторыми компиляторами C++, например, gcc, поддерживаются.
Владимир Головня
О чём и твержу-с :)
Хирьянов знает C/C++, как я знаю биографию Деда Мороза, то есть никак:)
Есть два понятия-синонима к твоему массиву:
Динамический массив (так в Паскале и ещё где-то зовётся) и Вектор в C/C++. Через макросы подставлять размер массива - лажа несерьёзная.
Если пишешь код в C++, то используй vector.
Если пишешь код в C, то используй динамическое создание и изменение размера массива в куче через функции malloc и realloc.
Есть два понятия-синонима к твоему массиву:
Динамический массив (так в Паскале и ещё где-то зовётся) и Вектор в C/C++. Через макросы подставлять размер массива - лажа несерьёзная.
Если пишешь код в C++, то используй vector.
Если пишешь код в C, то используй динамическое создание и изменение размера массива в куче через функции malloc и realloc.
Иван Старостин
Он, кажется, уточняет в начале лекции, что учит АиСД, а не языку С++ :)
книжки почитайте, нпример
Читать онлайн "C++: базовый курс" автора Шилдт Герберт
cout << "Необходимо элементов массива: ";
cin >> kol_elem;
int *arr = new int[kol_elem];
Читать онлайн "C++: базовый курс" автора Шилдт Герберт
cout << "Необходимо элементов массива: ";
cin >> kol_elem;
int *arr = new int[kol_elem];
Сергей Чернов
Ну, попробуй своим способом на андроиде или на компе создать массив, например, размером 200 млн. или 2 млрд. элементов типа int :)
А потом пробуй создать тот же размер массива, но так:
#include
#include
....
int* p=NULL;
p=(int*)malloc(sizeof(int)*sizeof(kol_elem));
p[0]=200;//для примера работы
free(p);
Твой вариант массива грохнется гораздо раньше, фуфло потому что
А потом пробуй создать тот же размер массива, но так:
#include
#include
....
int* p=NULL;
p=(int*)malloc(sizeof(int)*sizeof(kol_elem));
p[0]=200;//для примера работы
free(p);
Твой вариант массива грохнется гораздо раньше, фуфло потому что
Сергей Чернов
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
using namespace std;
int main()
{
int kol_elem;
int variant;
cout<<"Вариант массива (1 или 2): ";
cin>>variant;cout << "Количество элементов массива: ";
cin >> kol_elem;
if(variant==1)
{ int *arr = new int[kol_elem]; arr[0]=200;cout<<"\m массив создан";
delete arr;};
if(variant==2)
{
int* p=NULL;
p=(int*)malloc(sizeof(int)*sizeof(kol_elem));
p[0]=200;printf("\n %s","массивсоздан");
};
return 0;
}
#include<stdio.h>
#include<stdlib.h>
using namespace std;
int main()
{
int kol_elem;
int variant;
cout<<"Вариант массива (1 или 2): ";
cin>>variant;cout << "Количество элементов массива: ";
cin >> kol_elem;
if(variant==1)
{ int *arr = new int[kol_elem]; arr[0]=200;cout<<"\m массив создан";
delete arr;};
if(variant==2)
{
int* p=NULL;
p=(int*)malloc(sizeof(int)*sizeof(kol_elem));
p[0]=200;printf("\n %s","массивсоздан");
};
return 0;
}
Похожие вопросы
- Дан целочисленный массив с количеством элементов п. Сжать массив, выбросив из него каждый второй элемент.
- Задание массивы c++
- Как реализовать программу, в которой массив заполняется рандомно, а сумма его элементов всегда будет равна 1? С++
- Ошибка с русскими символами в языке C++ программе xcode. Пропадает если указать большее количество элементов в строке.
- Заменить нулями элементы массива, которые расположены между первым минимальным и последним максимальным элементами масси
- Создать одномерный массив, состоящий из n вещественных элементов. Элементы массива определить при помощи случайных чисел
- С++ | Как заменить макс. элементы (могут быть введены любые) массива на нули и вывести изменённый массив уже с нолями?!
- Дан массив из N элементов (N < 1000), причем N - четное. Вставить в середину массива сумму всех элементов.
- Как работать с элементами динамического массива из функции?
- Задачка по СИ на вставку элемента в динамический массив.