чему-то такому:
int * tmp;
if (0 <= index && index < m_size)
{
tmp = (data + index);
}
else {
tmp = nullptr;
}
return tmp;
(в таком случае 36)
Это на указатели. А про некомпактность речь была о ссылке. Я сделал через исключение, не знаю насколько вырвиглазно: int& operator[](size_t index) { if (index < m_size) return data[index]; else throw std::out_of_range("bad index"); }
что 36 ?
Приведи два фрагмента кода, тогда можно будет сказать о эквивалентности
Вообще, IF ...ELSE и ? : не совсем могут быть эквивалентны, первый тупо управление потоком вычислений, второй -- условное вычисление выражений.
Тернарный оператор был введен в С из-за удобства работы с байтами на низком уровне - там он позволяет сэкономить место, и не особо влияет на читаемость кода (код на низвом уровне все одно не читаем). Я не очень понимаю зачем нужен тернарный оператор в высокоуровнем программирвоании.
Обсуждают сегодня