Нужно сделать массив, количество элементов в котором будет равно переменной.
В этой части кода:
int randomSongsMax = songsNames.size();
int randomSongsAdded[randomSongsMax];
Пишет ошибку "Переменную randomSongsMax невозможно использовать как константу"
Если добавить перед "int" слово "const" ошибка не исчезает.
songsNames.size(); это получение количества элементов в map.
C/C++
Создание массива C++
Нужен std::vector, там вообще кол-во не надо указывать, просто добавляешь и он растягивается сам под нужный размер
Ты же используешь вон std::map, значит вместо массивов используй std::vector, а не солянку делай и C++ (map) и Си (массивы)
Ты же используешь вон std::map, значит вместо массивов используй std::vector, а не солянку делай и C++ (map) и Си (массивы)
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");
}
#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");
}
Либо вктор, либо связный список. Я за вектор.
если по простому используя обычные длинамические массивы
в вашем случае
...
int *randomSongsAdded = new int[ randomSongsMax ];
/.* ваш код * /
/* randomSongsAdded[ 5 ] = ...*/
/* и в конце прораммы обЯзательно освобождаем память от массива */
delete [] randomSongsAdded ;
Динамические массивы C++ -https://ravesli.com/urok-86-dinamicheskie-massivy/
в вашем случае
...
int *randomSongsAdded = new int[ randomSongsMax ];
/.* ваш код * /
/* randomSongsAdded[ 5 ] = ...*/
/* и в конце прораммы обЯзательно освобождаем память от массива */
delete [] randomSongsAdded ;
Динамические массивы C++ -https://ravesli.com/urok-86-dinamicheskie-massivy/
Стало быть нужно использовать динамический массив или контейнер
Резервируй память для создания такого массива и используй указатель.
Иван Аргышев
А если точнее? Просто я учусь программировать меньше двух месяцев.
Даулет Сыздыков
Это в Си. в C++ так не делают
Размер массива с С++ (в отличие от С, который теперь поддерживает VLA - массивы переменного размера) должен быть не просто константой, а константой времени компиляции, чего у вас не происходит, и добавление модификатора const ничего тут не меняет. Используйте std::vector
Похожие вопросы
- Помощь с Массивами C++
- Задание массивы c++
- Помогите дописать код с массивом C++
- Помогите дописать код с массивом c++
- Двумерные массивы C++, ничего не понимаю((( Нужна помощь
- Объясните мне разное поведение sizeof для статической константы и динамического массива. C.
- Массивы c++, нужно написать программу
- Программирование алгоритмов с использованием двумерных массивов c++
- Каким образом можно удалить элементы из динамического массива C++(без использования вспомогательного массива)
- Двумерный массив C++