Многомерные C-массивы и стандартные алгоритмыC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Многомерные C-массивы и стандартные алгоритмы

Сообщение Anonymous »

У меня есть следующий вариант использования:

Код: Выделить всё

int data[Y][X]{};

// I hope to do the following things:
int* begin = &data[0][0];
int* end = begin + Y * X;
std::fill(begin, end, 1);
std::all_of(begin, end, ...);
Мои вопросы:
  • Правильно ли здесь определено начало + Y * X?
    Если 1 -> нет, существуют ли четко определенные способы преобразования 2D-массива в пару итераторов? Не имеет значения, какой стандарт C++ используется.
  • Если 2 -> нет, существуют ли способы «нулевой стоимости» применить std::copy и т. д. к данным< /код>? То есть могу ли я применить эти алгоритмы так же эффективно, как если бы я применял их к реальным целым данным[Y * X]?
В соответствии с индексацией многомерного массива с использованием указателя на элементы, кажется, что UB «сглаживает» 2D-массив до пары итераторов, по крайней мере, начало + Y * X не является четко определенным. Однако в разделе «Каков безопасный способ заполнения многомерного массива с помощью std::fill?» все ответы основаны на подходе Begin + Y * X. Так что я действительно в замешательстве.


Подробнее здесь: https://stackoverflow.com/questions/787 ... algorithms
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»