Вы можете полностью исключить внутренний цикл, используя std::accumulate
, и просто сделать так, чтобы внешний цикл основывался на диапазоне:
#include <iostream>
#include <vector>
#include <numeric>
int main()
{
std::vector<std::vector<int>> magic_square = {{1, 14, 4, 15}, {8, 11, 5, 10}, {13, 2, 16, 3}, {12, 7, 9, 6}};
for (auto& v : magic_square)
{
if ( std::accumulate(v.begin(), v.end(), 0) != 34 )
return-1;
}
std::cout << "Square is magic\n";
return 0;
}
Пример в реальном времени