Действительно, вы не можете динамически читать данные в массив const.
Вы можете - однако - предоставить интерфейс const к изменяемым данным через ссылку на константу или указатель.
До тех пор пока вы задаете хорошие вопросы константность вы можете пойти дальше и сделать прыжок в std::array ...
#include <array>
#include <algorithm>
#include <iostream>
int main() {
std::array<int, 5> writable = {4,3,0,1,2};
const std::array<int, 5> & readable = writable;
// you can mutate the writable (and use algorithms...)
std::sort(writable.begin(), writable.end());
// readable[0] = 1020; // this would give an error
// but read access is fine
for(int i : readable)
std::cout << i << ' ';
}
(Примечание: Как вы говорите, «не знаю, что ваши данные есть ", есть разные степени незнания. Не знаю, сколько их есть, или зная, сколько есть, но только не ценности. Я на самом деле разбираюсь с достаточными ситуациями познания-как-много-и-не- ценности, которые я не предполагаю, что такие вещи не происходят, buuuut ... другие люди указывают на вероятную вероятность того, что вы не знаете, сколько их есть. В этом случае используйте вектор!)
Что вы подразумеваете под незнанием данных? Вы можете использовать переменные в списке инициализаторов (внутри '{}' фигурных скобок). Если вы не знаете размер массива во время написания кода, вам следует использовать динамически распределенные массивы (которые, конечно же, не могут быть инициализированы таким образом). – matb
О, ты действительно прав. Я имел в виду, что я знаю максимальный размер массива. Да, поскольку некоторые из них могут быть не инициализированы, жаль не может инициализировать переднюю часть. – younis