Задать вопрос
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 Оценить Комментировать
Решения вопроса 1
Используйте передачу по ссылке:
for (auto& neuron : neurons)

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

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

Похожие вопросы