ifstream
предлагает перегрузку operator>>
для извлечения значений из следующей строки потока. Тем не менее, я часто ловлю себя на том, что делаю это:
int index;
input >> index;
arr[index] = <something>;
Есть ли способ получить эти данные в [index]
без создания этой временной переменной?
arr
и<something>
. Но в конечном счете, я склоняюсь к не простому решению. - person StoryTeller - Unslander Monica   schedule 30.03.2018vector<T>
, что-то не связанное сarr
иindex
- person It'sNotALie.   schedule 30.03.2018[index]
без создания явной локальной (временной) переменной, вы все равно получите безымянную временную переменную. Компилятор может довольно хорошо оптимизировать явную локальную переменную. Я предпочел бы быть явным, чем хитрым, но это только я. - person Eljay   schedule 30.03.2018T
предварительное построение всего вектора с фиктивными значениями и последующее присвоение может быть само по себе однозначным. - person StoryTeller - Unslander Monica   schedule 30.03.2018T
в индексе после его построения. Идет вразрез с c'tors. Это похоже на общедоступный методinit()
, отдельный антишаблон. Но это в конечном итоге зависит отT
. Я думаю, что в этом вопросе может быть что-то вроде элемента XY. - person StoryTeller - Unslander Monica   schedule 30.03.2018if (in >> value) { /* use value */ }
. Кроме того, порядок оценки не определен, и что-то вродеarray[read<int>(in)] = read<T>(in);
обязательно сделает неправильную вещь (вашему<something>
лучше не читать тот же поток). - person Dietmar Kühl   schedule 30.03.2018index
, это то, что вы думаете, прежде чем использовать его imo - person Galik   schedule 30.03.2018array[read<int>(in)] = read<T>(in);
гарантированно сначала оценивает правую сторону, поэтому у вас будетread<T>(in)
, затемread<int>(in)
, затемarray[...]
, затем... = ...
. stackoverflow.com/a/38501596/1896169 - person Justin   schedule 30.03.2018