Diel
@Diel

Как заставить C++ не деконструктить экземпляр класса лишний раз в конце цикла?

Если цикл имеет вид
for (int i = 0; i < 4; i++) {
  neurons[i].init(3);
  neurons[i].setRandomWeights(-1.0, 1.0);
  neurons[i].dumpWeights();
}

то всё хорошо, но при
for (auto neuron : neurons) {
  neuron.init(3);
  neuron.setRandomWeights(-1.0, 1.0);
  neuron.dumpWeights();
}

деконструктор вызывается каждый раз после dumpWeights(). Но конструктор -- нет, только в начале, т.е. копии не создаются. Как исправить? Хотелось бы пользоваться красивым синтаксисом плюсов
  • Вопрос задан
  • 291 просмотр
Решения вопроса 1
Используйте передачу по ссылке:
for (auto& neuron : neurons)

Иначе при обходе цикла вы скопируете весь массив. А то, что конструктор вызывается только вначале, — очень странно, скорее всего, это ещё один баг. Можно увидеть всё объявление класса neuron (без реализации функций)?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
28 мар. 2024, в 18:16
1000 руб./за проект
28 мар. 2024, в 18:15
90000 руб./за проект
28 мар. 2024, в 18:05
5000 руб./за проект