Цикл for на основе диапазона для массива, передаваемого неосновной функции
В C цикл for на основе диапазона может быть используется для перебора массива. Однако когда массив передается не основной функции, он превращается в указатель, теряя информацию о своем размере.
Чтобы решить эту проблему и включить использование цикла for на основе диапазона, массив на него следует ссылаться, а не передавать как указатель. При этом сохраняется информация о размере массива. Вот модифицированные примеры, демонстрирующие правильный подход:
void foo(int (&bar)[3]);
int main() {
int bar[3] = {1,2,3};
for (int i : bar) {
cout << i << endl;
}
foo(bar);
}
void foo(int (&bar)[3]) {
for (int i : bar) {
cout << i << endl;
}
}
// Generic implementation
template <std::size_t array_size>
void foo(int (&bar)[array_size]) {
for (int i : bar) {
cout << i << endl;
}
}
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3