C/C++

Создание массива C++

Нужно сделать массив, количество элементов в котором будет равно переменной.
В этой части кода:
int randomSongsMax = songsNames.size();
int randomSongsAdded[randomSongsMax];
Пишет ошибку "Переменную randomSongsMax невозможно использовать как константу"
Если добавить перед "int" слово "const" ошибка не исчезает.
songsNames.size(); это получение количества элементов в map.
Нужен std::vector, там вообще кол-во не надо указывать, просто добавляешь и он растягивается сам под нужный размер

Ты же используешь вон std::map, значит вместо массивов используй std::vector, а не солянку делай и C++ (map) и Си (массивы)
Арман Дюсенгазин
Арман Дюсенгазин
181
Лучший ответ
Cемён Зайцев Начинающим очень сложно отделить С от С++
// Этот код получает из std::map целые значения и вставляет их в std::vector, который сортирует по возрастанию и выводит результат в консоль

#include <algorithm>
#include <iostream>
#include <map>
#include <vector>
using namespace std;
int main() {
map<char, int> box{ { 'a', 8 }, { 'b', 5 }, { 'c', 7 } };
vector<int> num;
for (const auto& [key, value] : box) num.push_back(value);
sort(num.begin(), num.end());
for (auto value : num) cout << value << ' ';
puts("");
system("pause > nul");
}
ES
Erik Sharshen
73 212
Либо вктор, либо связный список. Я за вектор.
если по простому используя обычные длинамические массивы
в вашем случае
...
int *randomSongsAdded = new int[ randomSongsMax ];

/.* ваш код * /
/* randomSongsAdded[ 5 ] = ...*/

/* и в конце прораммы обЯзательно освобождаем память от массива */
delete [] randomSongsAdded ;

Динамические массивы C++ -https://ravesli.com/urok-86-dinamicheskie-massivy/
Алик Касымов
Алик Касымов
16 208
Стало быть нужно использовать динамический массив или контейнер
ДХ
Дмитрий Х
7 902
Резервируй память для создания такого массива и используй указатель.
Иван Аргышев А если точнее? Просто я учусь программировать меньше двух месяцев.
Даулет Сыздыков Это в Си. в C++ так не делают
Размер массива с С++ (в отличие от С, который теперь поддерживает VLA - массивы переменного размера) должен быть не просто константой, а константой времени компиляции, чего у вас не происходит, и добавление модификатора const ничего тут не меняет. Используйте std::vector